我想要绑定数据gridview并更改数据' 0'到' - ' 。 但是错误:指定的参数超出了有效值的范围。参数名称:index
代码asp
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False" AllowPaging="true"
OnRowCreated="GridView1_RowCreated"
OnRowDataBound="GridView1_RowDataBound" >
<Columns>
<asp:BoundField DataField="amt" HeaderText="Total"
DataFormatString="{0:#,##0.00000}" ItemStyle-HorizontalAlign="Right" />
</Columns>
</asp:GridView>
代码C#
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string sAmt = DataBinder.Eval(e.Row.DataItem, "amt").ToString();
if (sAmt == "0.00000")
{
e.Row.Cells[10].Text = "-"; <<< Line Error
}
}
}
如果字段AMT显示0。
我想改为&#34; 0&#34;到&#34; - &#34;
请帮帮我。谢谢你的时间。 ;)
答案 0 :(得分:1)
索引为10:
e.Row.Cells[10].Text = "-"; <<< Line Error
有效?我的意思是阵列中有11个项目,你可能试图访问数组范围之外的东西。
答案 1 :(得分:0)
错误消息告诉您在GridView中没有索引为10的单元格。确保 Cells 数组是大的。 可能应该尝试
e.Row.Cells[e.Row.Cells.Length-1].Text = "-";
答案 2 :(得分:0)
首先检查所选行中是否存在第9列(从0开始为e.Row.Cells[10]
)。
如果您想在GridView
单元格下方显示特定值,请使用TemplateField
Gridview
<asp:TemplateField HeaderText="Gender">
<ItemTemplate>
<asp:Label runat="server" Text='<% #GetLangID(Eval("langid2")) %>' />
</ItemTemplate>
</asp:TemplateField>
这将是你的代码背后
public string GETLangID(object dataItem)
{
string text = string.Empty;
int? val = dataItem as int?;
switch (val)
{
case 0:
text = "-";
break;
case 1:
text = "One";
break;
case 2:
text = "two";
break;
}
return text;
}