首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GridView的RowDataBound函数

GridView的RowDataBound函数
EN

Stack Overflow用户
提问于 2009-03-14 04:58:53
回答 2查看 23.1K关注 0票数 2

我有一个包含3个字段的DataTableACountBCountDCount。如果为ACount < 0,则需要在GridView的其中一列中显示“S”。如果为ACount > 0,则我必须在该列中显示'D‘(在标签中)。BCountDCount也是如此。如何在RowDataBound函数中执行此条件检查?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-03-14 05:45:39

GridView OnRowDataBound活动是您的朋友:

代码语言:javascript
复制
<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’字符,但你应该能够重新组合以满足你的需要。

票数 6
EN

Stack Overflow用户

发布于 2012-04-19 16:13:18

这对我很有效..。我一定是误解了什么,所以我不得不用或为ASP替换尖括号,所以请注意这一点。

代码语言:javascript
复制
 [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 += "...";
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/645415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档