当前位置:  开发笔记 > 编程语言 > 正文

从RowDataBound事件的gridview获取单元格中的值

如何解决《从RowDataBound事件的gridview获取单元格中的值》经验,为你挑选了5个好方法。

为什么不直接从数据源中提取数据.

DataBinder.Eval(e.Row.DataItem, "ColumnName")


Chris.. 23

当您使用TemplateField并将文字文本绑定到它时,asp.net实际上会为您插入一个控件!它被放入DataBoundLiteralControl中.如果您在获取空文本的代码行附近查看调试器,则可以看到此信息.

因此,要在不更改模板的情况下访问信息以使用控件,您可以这样投射:

string percentage = ((DataBoundLiteralControl)e.Row.Cells[7].Controls[0]).Text;

那会得到你的文字!



1> Stephen Wrig..:

为什么不直接从数据源中提取数据.

DataBinder.Eval(e.Row.DataItem, "ColumnName")



2> Chris..:

当您使用TemplateField并将文字文本绑定到它时,asp.net实际上会为您插入一个控件!它被放入DataBoundLiteralControl中.如果您在获取空文本的代码行附近查看调试器,则可以看到此信息.

因此,要在不更改模板的情况下访问信息以使用控件,您可以这样投射:

string percentage = ((DataBoundLiteralControl)e.Row.Cells[7].Controls[0]).Text;

那会得到你的文字!



3> 小智..:

以上是很好的建议,但您可以在网格视图中获取单元格的文本值,而无需将其包装在文字或标签控件中.你只需要知道要连接的事件.在这种情况下,请改用DataBound事件,如下所示:

protected void GridView1_DataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if (e.Row.Cells[0].Text.Contains("sometext"))
        {
            e.Row.Cells[0].Font.Bold = true;
        }
    }
}

运行调试器时,您将看到此方法中出现的文本.


如此聪明,检查当前行是否为数据行

4> Orion Adrian..:

首先,您需要将代码包装在一个Label或一个Literal控件中,以便您可以正确引用它.发生的事情是系统没有办法跟踪它,因为没有与文本相关的控制.控件的责任是将其内容添加到viewstate.

你需要使用gridView.FindControl("controlName"); 获得行中的控件.从那里你可以得到它的属性,包括Text.

您还可以获取相关行的DataItem属性并将其转换为适当的类型并直接提取信息.


您不需要将代码包装在Label或Literal中.请参阅下面的答案.

5> 小智..:

只需使用循环来检查gridview中的单元格,例如:

for (int i = 0; i < GridView2.Rows.Count; i++)
{
    string vr;
    vr = GridView2.Rows[i].Cells[4].Text; // here you go vr = the value of the cel
    if (vr  == "0") // you can check for anything
    {
        GridView2.Rows[i].Cells[4].Text = "Done";
        // you can format this cell 
    }
}

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有