【问题标题】:e.Row.Cells[x] not indexing correctlye.Row.Cells[x] 没有正确索引
【发布时间】:2012-05-16 16:45:53
【问题描述】:

我目前在我的 asp.net 应用程序中有这个 gridview OnRowDataBound 方法:

protected void gvwStatus_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        string excsCost = e.Row.Cells[3].Text.ToString();
        //do stuff//
    }
}

标记:

                                  <asp:GridView ID="gvwStatus" runat="server" CssClass="gridview" ShowHeaderWhenEmpty="True"
                                        AllowPaging="True" BackColor="Control" OnSorting="gvw_OnSorting" OnPageIndexChanging="gvwStatus_PageIndexChanging"
                                        OnRowDataBound="gvwStatus_OnRowDataBound" AllowSorting="True" AutoGenerateColumns="False"
                                        Width="98%" PageSize="100" Style="margin-left: 10px;">
                                        <Columns>
                                            <asp:TemplateField HeaderText="Item" SortExpression="ITEM_NO">
                                                <ItemTemplate>
                                                    <asp:LinkButton ID="lbtnItemNo" runat="server" CssClass="app_hyperlink" Text='<%#Eval("ITEM_NO") %>'
                                                        OnCommand="lbtnItemNo_OnClick" CommandArgument='<%#Eval("ITEM_NO") %>' />
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                            <asp:BoundField DataField="ITEM_OBS_STATUS" HeaderText="Obs Status" SortExpression="ITEM_OBS_STATUS" />
                                            <asp:BoundField DataField="MIP_NO" HeaderText="MIP" SortExpression="MIP_NO" />
                                            <asp:BoundField DataField="LOT_FROM_EFF_DATE" HeaderText="Chgovr Date" SortExpression="LOT_FROM_EFF_DATE" />
                                            <asp:BoundField DataField="TRGT_CHGOVR_DATE" HeaderText="Target Date" SortExpression="TRGT_CHGOVR_DATE" />
                                            <asp:TemplateField HeaderText="Excess Cost" SortExpression="EXCS_ITEM_COST_TOT">
                                                <ItemTemplate>
                                                    <asp:Label ID="lblExcessCostStatus" runat="server" CssClass="app_label" Text='<%#string.Format("{0:C}", Eval("EXCS_ITEM_COST_TOT")) %>' />
                                                </ItemTemplate>
                                                <ItemStyle HorizontalAlign="Right" />
                                            </asp:TemplateField>
                                            <asp:BoundField DataField="SENT_TS" HeaderText="Sent to Plants/Vndrs" SortExpression="SENT_TS" />
                                        </Columns>
                                        <AlternatingRowStyle BackColor="White" />
                                        <PagerStyle HorizontalAlign="Left" />
                                        <PagerSettings Mode="NumericFirstLast" />
                                        <HeaderStyle CssClass="gvLinkNoUnderline" />
                                    </asp:GridView>

索引在此处无法正常工作。对于我的字符串 excsCost,我指定我想要索引 3(或单元格 4)中的值,但我从索引 5(单元格 6)中获取值。当我指定索引 2 时,我从索引 0 中获取值。似乎完全未对齐。

有人熟悉这个问题吗?

【问题讨论】:

  • 你能显示你的 GridView 标记吗?
  • 我不知道 GridView,但是使用 DataGridView (winforms),如果在运行时对列进行了重新排序,则显示索引将与列索引不匹配。会是这样吗?你能用列名代替索引吗?
  • 不,很遗憾。您不能按字符串名称引用 gridview 列。

标签: .net data-binding gridview


【解决方案1】:

实际上您使用的是ItemTmplate,因此您可以通过编程方式获取控件并在代码中对其进行操作

   protected void gvwStatus_OnRowDataBound(object sender, GridViewRowEventArgs e)
    {


      if (e.Row.RowType == DataControlRowType.DataRow)
      {
         Label lblExcsCost = new Label();
         lblExcsCost = e.Row.FindControl("lblExcessCostStatus") as Label;
         string excsCost = lblExcsCost.Text();
      }
    }

【讨论】:

    猜你喜欢
    • 2019-06-26
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 2017-07-31
    • 2019-12-02
    • 2023-03-22
    • 2018-09-16
    • 1970-01-01
    相关资源
    最近更新 更多