qui*_*qui 31 c# asp.net gridview
string percentage = e.Row.Cells[7].Text;
Run Code Online (Sandbox Code Playgroud)
我试图用我的GridView做一些动态的东西,所以我把一些代码连接到RowDataBound事件.我试图从特定的单元格中获取值,这是一个TemplateField.但上面的代码似乎总是返回一个空字符串.
有任何想法吗?
澄清一下,这里有点违规的细胞:
<asp:TemplateField HeaderText="# Percentage click throughs">
<ItemTemplate>
<%# AddPercentClickThroughs((int)Eval("EmailSummary.pLinksClicked"), (int)Eval("NumberOfSends")) %>
</ItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)
在相关的说明中,有没有人知道是否有更好的方法来选择行中的单元格.它很糟糕cell[1]
.我不能这样做cell["mycellname"]
,所以如果我决定改变我的细胞的顺序,那么虫子不会出现?
Ste*_*ton 52
为什么不直接从数据源中提取数据.
DataBinder.Eval(e.Row.DataItem, "ColumnName")
Run Code Online (Sandbox Code Playgroud)
Chr*_*ris 23
当您使用TemplateField并将文字文本绑定到它时,asp.net实际上会为您插入一个控件!它被放入DataBoundLiteralControl中.如果您在获取空文本的代码行附近查看调试器,则可以看到此信息.
因此,要在不更改模板的情况下访问信息以使用控件,您可以这样投射:
string percentage = ((DataBoundLiteralControl)e.Row.Cells[7].Controls[0]).Text;
Run Code Online (Sandbox Code Playgroud)
那会得到你的文字!
小智 13
以上是很好的建议,但您可以在网格视图中获取单元格的文本值,而无需将其包装在文字或标签控件中.你只需要知道要连接的事件.在这种情况下,请改用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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
运行调试器时,您将看到此方法中出现的文本.
Ori*_*ian 11
首先,您需要将代码包装在一个Label
或一个Literal
控件中,以便您可以正确引用它.发生的事情是系统没有办法跟踪它,因为没有与文本相关的控制.控件的责任是将其内容添加到viewstate.
你需要使用gridView.FindControl("controlName"); 获得行中的控件.从那里你可以得到它的属性,包括Text
.
您还可以获取相关行的DataItem属性并将其转换为适当的类型并直接提取信息.
小智 6
只需使用循环来检查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
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
251433 次 |
最近记录: |