我有一个从数据库中获取数据的gridview 这是.NET代码。有很多专栏,这里是模板:选择是我正在谈论的那个。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" AllowPaging="True" CellPadding="4" DataKeyNames="EmpID" ForeColor="#333333" GridLines="None" style="margin-right: 81px" Width="1174px" >
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:TemplateField HeaderText="Choice" SortExpression="Choice">
<EditItemTemplate>
<asp:DropDownList ID="DropDownChoice" Text='<%# Bind("Choice") %>' runat="server" Width="60px">
<asp:ListItem Text="No" Value="0"></asp:ListItem>
<asp:ListItem Text="Yes" Value="1"></asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblChoice" runat="server" Text='<%# Bind("Choice") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
在EditItemTemplate上,用户可以编辑数据库上的所述数据。我可以使用下拉列表并将文本显示为No或Yes,但将保存在数据库中的值仍为0和1.
<EditItemTemplate>
<asp:DropDownList ID="DropDownChoice" Text='<%# Bind("Choice") %>' runat="server" Width="60px">
<asp:ListItem Text="No" Value="0"></asp:ListItem>
<asp:ListItem Text="Yes" Value="1"></asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
一旦运行,我就无法在Gridview上显示文本No和Yes。正如您在这里看到的那样是ItemTemplate代码:
<ItemTemplate>
<asp:Label ID="lblChoice" runat="server" Text='<%# Bind("Choice") %>'></asp:Label>
</ItemTemplate>
一旦执行,请建议在ItemTemplate / Gridview部分显示No / Yes的方法/方法。谢谢(如果您需要C#代码来绑定gridview上的数据,请告诉我们)
注意: 我已经尝试了在此question中回答的RowDataBound事件。 这是代码:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
System.Data.DataRow dr = ((System.Data.DataRowView)e.Row.DataItem).Row;
if (dr["Choice"].ToString() == "0")
{
((Label)e.Row.FindControl("lblChoice")).Text = "No";
}
else if (dr["Choice"].ToString() == "1")
{
((Label)e.Row.FindControl("lblChoice")).Text = "Yes";
}
}
}
但它不起作用。我错过了什么吗?我是否必须在<ItemTemplate>
代码中添加内容?
答案 0 :(得分:1)
据我所知,您可以使用Render Property函数或行数据绑定事件。
这两个答案均来自此question
编辑:当您询问如何调用RowDataBound事件时,它会添加到GridView标记中,如下所示:
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound"></asp:GridView>
答案 1 :(得分:1)
不使用RowBound事件就可以执行此操作
<ItemTemplate>
<asp:Label ID="lblChoice" runat="server"
Text='<%# Bind("Choice").Equals("1")? "Yes" : "No" %>'></asp:Label>
</ItemTemplate>