繁体   English   中英

编辑GridView时显示下拉列表

[英]Display Dropdown When Editing GridView

我想在用户编辑行时在GridView中将字段显示为DropDownList。 DropDownList将预先填充两个值,“是”和“否”,并且取决于用户选择的值,我想设置变量。

例:

我有一个名为active的字段。 1 =有效,0 =无效。 虽然对于用户我希望他们将Active设置为“Yes”(1)或“No”(0)。 当编辑行时,他们可以从下拉列表中选择“是”或“否”,它会将变量设置为1或0,因此我可以在SQL更新中将其发回。

我找到了这篇MSDN文章

但它只告诉我如何从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>

您可以添加listitem ...

<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 ,它会自动传递DB a 1 or o

您不需要rowdatabound,只需将列转换为模板字段即可。

这是迟到的回复,但它会帮助遇到相同场景的其他人。

codezone4教程

使用EditTemplate的Dropdown并使用Label在ItemTemplate显示选择在msdn post中查看此示例(一直滚动到结尾以获取下拉列表方案)。

  1. 在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> 
  2. 在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"; } } 

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM