.net e、 行.单元格[x]索引不正确
我当前在asp.net应用程序中有此gridview OnRowDataBound方法:.net e、 行.单元格[x]索引不正确,.net,data-binding,gridview,.net,Data Binding,Gridview,我当前在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();
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中获取值。似乎完全不一致
有人熟悉这个问题吗?实际上您使用的是
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();
}
}
可以显示GridView标记吗?我不知道GridView,但是对于DataGridView(winforms),如果在运行时对列进行了重新排序,则显示索引将与列索引不匹配。是吗?你能用列名代替索引吗?不,很遗憾。不能按字符串名称引用gridview列。