我有一个包含3个字段的DataTable:ACount,BCount和DCount。如果为ACount < 0,则需要在GridView的其中一列中显示“S”。如果为ACount > 0,则我必须在该列中显示'D‘(在标签中)。BCount和DCount也是如此。如何在RowDataBound函数中执行此条件检查?
发布于 2009-03-14 05:45:39
GridView OnRowDataBound活动是您的朋友:
<asp:gridview
id="myGrid"
onrowdatabound="MyGrid_RowDataBound"
runat="server">
<columns>
<asp:boundfield headertext="ACount" datafield="ACount" />
<asp:boundfield headertext="BCount" datafield="BCount" />
<asp:boundfield headertext="DCount" datafield="DCount" />
<asp:templatefield headertext="Status">
<itemtemplate>
<asp:label id="aCount" runat="server" />
<asp:label id="bCount" runat="server" />
<asp:label id="dCount" runat="server" />
</itemtemplate>
</asp:templatefield>
</columns>
</asp:gridview>
// Put this in your code behind or <script runat="server"> block
protected void MyGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType != DataControlRowType.DataRow)
{
return;
}
Label a = (Label)e.Row.FindControl("aCount");
Label b = (Label)e.Row.FindControl("bCount");
Label d = (Label)e.Row.FindControl("dCount");
int ac = (int) ((DataRowView) e.Row.DataItem)["ACount"];
int bc = (int) ((DataRowView) e.Row.DataItem)["BCount"];
int dc = (int) ((DataRowView) e.Row.DataItem)["DCount"];
a.Text = ac < 0 ? "S" : "D";
b.Text = bc < 0 ? "S" : "D";
d.Text = dc < 0 ? "S" : "D";
}我不确定你想要在哪里呈现'S‘和'D’字符,但你应该能够重新组合以满足你的需要。
发布于 2012-04-19 16:13:18
这对我很有效..。我一定是误解了什么,所以我不得不用或为ASP替换尖括号,所以请注意这一点。
[asp:TemplateField runat="server" HeaderText="Header"]
[ItemTemplate]
[asp:Label ID="theLabel" runat="server" Text='[%# Eval("DataSource").ToString()
%]'][/asp:Label]
[/ItemTemplate]
[/asp:TemplateField]
protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label newLabel = (Label)e.Row.FindControl("theLabel");
if (newLabel.Text.Length > 20) //20 is cutoff length
{
newLabel.Text = lbl.Text.Substring(0, 20);
newLabel.Text += "...";
}
}
}https://stackoverflow.com/questions/645415
复制相似问题