RowDataBound функция GridView - PullRequest
       8

RowDataBound функция GridView

2 голосов
/ 14 марта 2009

У меня есть DataTable, который содержит 3 поля: ACount, BCount и DCount. Если ACount < 0, тогда мне нужно отобразить 'S' в одном из столбцов GridView. Если ACount > 0, тогда я должен отобразить 'D' в этом столбце (в метке). То же самое с BCount и DCount. Как я могу выполнить эту условную проверку в функции RowDataBound?

Ответы [ 2 ]

5 голосов
/ 14 марта 2009

Событие 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, но вы должны иметь возможность перенастроить для удовлетворения ваших потребностей.

2 голосов
/ 19 апреля 2012

Это сработало для меня .... Должно быть, я что-то неправильно понял, поэтому мне пришлось заменить угловые скобки на [или] для 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 += "...";
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...