asp.net - 如何使用 VB 将数据库表中的下拉列表数据绑定(bind)到 gridview 中?

标签 asp.net vb.net gridview drop-down-menu

因此,在这个 GridView 中,有一个状态列,我希望在单击编辑按钮时显示一个包含“通过”、“待处理”、“失败”的下拉列表。这些值已经在表中,因此我需要以某种方式从该表绑定(bind)到每一行的每个 ddl。

这是 GridView 中的列。正如您所看到的,我只想在不处于编辑模式时显示一个标签,并在按下编辑按钮时显示一个 ddl

    <asp:TemplateField HeaderText="During Production Status" SortExpression="DuringProductionStatus">
        <EditItemTemplate>
             <asp:DropDownList ID="ddlStatus" runat="server" datavaluefield="Name" 
                 datatextfield="Name" DataSource="*What goes here?*"> />
        </EditItemTemplate>
        <ItemTemplate>
            <asp:Label ID="lblStatus" runat="server"
                Text='I don't understand how to get this from the ddl' />
        </ItemTemplate>
    </asp:TemplateField>

为了清楚起见,我的表名为 Status,数据库名为 DirectImport

最佳答案

这里需要执行几个步骤 - 这些步骤都不是特别困难,但可能有点繁琐(恕我直言)。好消息是,一旦您成功完成一次,再做一次就会变得更容易!

我假设你有一个<asp:*DataSource>页面上的控件 - 我更喜欢 ObjectDataSource,但我认为这并不重要,我认为 SqlDataSource 效果同样好。我从未尝试过用 GridView.DataSource = MyDataSet 这样做在代码隐藏中,所以我不知道这是否有效,但我的假设是它不会,因为你不会得到你想要的正确的双向绑定(bind)。该数据源为您的网格提供主要数据。这里的关键点是您的数据库查询必须返回状态文本字段和状态 ID。

所以你的 GridView 现在看起来像:

<asp:objectdatasource runat="server" id="MainDataSource" ... />  
<asp:gridview runat="server" id="MyGridView" DataSourceID="MainDataSource">  
    <Columns>  
        <asp:TemplateField HeaderText="During Production Status" SortExpression="DuringProductionStatus">  
            <ItemTemplate>  
                <asp:Label ID="lblStatus" runat="server"  
                   Text="<%# Bind('Status') %>" />  
           </ItemTemplate>  
        </asp:TemplateField>  
     </Columns>  
</asp:gridview>  

Text="<%# Bind('Status') %>"是将状态文本放入网格时缺少的部分。

现在将第二个数据源添加到标记中,该数据源从状态表中读取一组值。

<asp:objectdatasource runat="server" id="StatusObjectDataSource" ... />

并将 EditItemTemplate 添加到绑定(bind)到 Status DataSource 的 GridView 中。

<EditItemTemplate>
    <asp:DropDownList ID="ddlStatus" runat="server" datavaluefield="StatusID" 
        datatextfield="Status" DataSourceID="StatusObjectDataSource"  
        SelectedValue="<%# Bind('StatusId') %>" />
</EditItemTemplate>

SelectedValue="<%# Bind('StatusId') %>"是连接两个数据集的东西,这样当您将一行翻转到编辑模式时,下拉列表就已经选择了正确的项目,然后当您保存它时,您就可以将状态 ID 放入数据库中。
你就完成了。

关于asp.net - 如何使用 VB 将数据库表中的下拉列表数据绑定(bind)到 gridview 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1848631/

相关文章:

asp.net - 如何使用 ASP.NET 的动态数据脚手架将表设为只读

c# - 是否有可能获得一个 Action 中的语句数量或确定它是否有空体?

vb.net - 使用关键字作为标识符无效 --> ReadOnly

.net - 为什么.Net 应用程序启动速度较慢?

cocoa-touch - 关闭模态视图 Controller 后重新加载 gridView 数据时出现问题

javascript - ASP.NET - 如何更改 JSON 序列化的方式?

asp.net - 我从哪里可以获得 Microsoft Chart Control 示例代码?

c# - 带有 DropDownList 的 Gridview RowCommand 事件不起作用

c# - C#.net 中的 Window Gridview 单元格合并

c# - 从未定义样式的 ASP.NET GridView 行