当用户编辑行时,我想在GridView中显示一个字段作为DropDownList。 DropDownList将预先填充两个值,“是”和“否”,并且取决于用户选择的值,我想设置变量。
示例:
我有一个名为active的字段。 1 =有效,0 =无效。虽然对于用户我希望他们将Active设置为“Yes”(1)或“No”(0)。当编辑行时,他们可以从下拉列表中选择“是”或“否”,它会将变量设置为1或0,因此我可以在SQL更新中将其发回。
我发现了MSDN article。
但它只告诉我如何从DataSource填充DropDownList,这对我来说不起作用,因为每个字段都有一个yes或no for active。即使只是在查看GridView时,它也会显示下拉列表,而不仅仅是在编辑时。
我希望这是有道理的,谢谢你的帮助。
修改
这是我现在的代码,它几乎像我喜欢的那样。如果Active的值为“True”,我现在需要做的就是将标签文本更改为“Yes”,如果Active的值为“False”,则将文本更改为“No”。
<asp:TemplateField HeaderText="Active" SortExpression="Active" >
<ItemTemplate>
<asp:Label ID="lblActive" runat="server" text='<%# Eval("Active") %>'/>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Bind("Active") %>'>
<asp:ListItem Text="Yes" Value="True"></asp:ListItem>
<asp:ListItem Text="No" Value="False"></asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
答案 0 :(得分:1)
您可以添加类似...
的列表项<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem Text="Yes" Value="1"></asp:ListItem>
<asp:ListItem Text="No" Value="0"></asp:ListItem>
</asp:DropDownList>
您可以绑定SelectedValue
,它会自动将数据库传递给1 or o
。
答案 1 :(得分:0)
使用EditTemplate
中的下拉列表并使用标签在ItemTemplate
中显示选择内容
请参阅msdn post中的此示例(一直滚动到下拉列表方案的末尾)。
答案 2 :(得分:0)
在edititem模板中放置一个标签控件(显示数据库中的当前值)和下拉列表
<asp:Label ID="lbl" runat="server" Text='<%#Eval("authostatus") %>' Visible="false"></asp:Label>
<asp:DropDownList ID="Autharisationddl" runat="server">
<asp:ListItem Text="Yes" Value="1"></asp:ListItem>
<asp:ListItem Text="No" Value="0"></asp:ListItem>
</asp:DropDownList>
在gridview rowdatabound事件中,根据标签控制值设置下拉值。
if ((e.Row.RowState & DataControlRowState.Edit) > 0)
{
Label lbl= (Label)e.Row.FindControl("lbl");
DropDownList ddl= (DropDownList)e.Row.FindControl("ddl");
if (lbl!= null)
{
if (lbl.Text == "1")
ddl.SelectedValue = "1";
else if (lbl.Text == "0")
ddl.SelectedValue = "0";
}
}
感谢
答案 3 :(得分:0)
您不需要rowdatabound,只需将列转换为模板字段。
答案 4 :(得分:0)
这是迟到的回复,但它会帮助遇到相同情况的其他人。