【发布时间】:2018-05-01 05:05:37
【问题描述】:
我在 ASP 页面上有一个 GridView 绑定到具有外键的表,其中列具有 DropdownLists 与 TEXT 收集到 VALUES,在其他表中。
当我编辑 GridView 的行时,我在 CodeBehind 中添加下拉菜单的文本。这一切都很好。但是当我尝试手动设置 DataSource 的 UpdateParameters 时,我想检查 DropDowns 中的哪些值被选中。但在我尝试的每一个事件中,下拉列表都是 NULL。
我试过了:
- GridView 的 RowUpdating- 和 RowEditing-Events
- 数据源的更新事件
ASPX:
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound" AutoGenerateColumns="False" OnRowUpdating="GridView1_RowUpdating" OnRowEditing="GridView1_RowEditing" DataSourceID="SqlDataSource1" CellPadding="4" ForeColor="#333333" GridLines="None" AllowPaging="True" AllowSorting="True" Width="90%" DataKeyNames="id" Font-Size="Large">
<Columns>
<asp:TemplateField HeaderText="id" InsertVisible="False" SortExpression="id" Visible="False">
<EditItemTemplate>
<asp:Label ID="LabelIDe" runat="server" Text='<%# Eval("id") %>'></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="LabelIDi" runat="server" Text='<%# Bind("id") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Mitglied" InsertVisible="False" SortExpression="mitgliedid">
<EditItemTemplate>
<asp:Label ID="LabelMe" runat="server" Text='<%# Bind("mitgliedid") %>' Visible="false"></asp:Label>
<asp:DropDownList runat="server" ID="mitgliederDD">
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="LabelMi" runat="server" Text='<%# Bind("mitgliedid") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Amt" InsertVisible="False" SortExpression="amtid">
<EditItemTemplate>
<asp:Label ID="LabelAe" runat="server" Text='<%# Bind("amtid") %>' Visible="false"></asp:Label>
<asp:DropDownList runat="server" ID="ämterDD">
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="LabelAi" runat="server" Text='<%# Bind("amtid") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowSelectButton="True" ItemStyle-HorizontalAlign="Right" />
</Columns>
<EditRowStyle BackColor="#7C6F57" HorizontalAlign="Center"></EditRowStyle>
<FooterStyle BackColor="#1C5E55" BorderStyle="None" Font-Bold="True" ForeColor="White"></FooterStyle>
<HeaderStyle BackColor="#666666" Font-Bold="True" ForeColor="White" CssClass="gridHeader"></HeaderStyle>
<PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" CssClass="gridPager" Font-Bold="True"></PagerStyle>
<RowStyle BackColor="#E3EAEB" HorizontalAlign="Center"></RowStyle>
<SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333"></SelectedRowStyle>
<SortedAscendingCellStyle BackColor="#F8FAFA"></SortedAscendingCellStyle>
<SortedAscendingHeaderStyle BackColor="#246B61"></SortedAscendingHeaderStyle>
<SortedDescendingCellStyle BackColor="#D4DFE1"></SortedDescendingCellStyle>
<SortedDescendingHeaderStyle BackColor="#15524A"></SortedDescendingHeaderStyle>
<EmptyDataTemplate>Zur Zeit kein Datensatz in dieser Tabelle !</EmptyDataTemplate>
</asp:GridView>
<asp:SqlDataSource runat="server" ID="SqlDataSource1" OnUpdating="SqlDataSource1_Updating" ConnectionString='<%$ ConnectionStrings:ConnectionStringAPPDATA %>' SelectCommand="SELECT [id], [amtid], [mitgliedid] FROM [aemter_mitglieder]" DeleteCommand="DELETE FROM [aemter_mitglieder] WHERE [id] = @id" InsertCommand="INSERT INTO [aemter_mitglieder] ([amtid], [mitgliedid]) VALUES (@amtid, @mitgliedid)" UpdateCommand="UPDATE [aemter_mitglieder] SET [amtid] = @amtid, [mitgliedid] = @mitgliedid WHERE [id] = @id">
<DeleteParameters>
<asp:Parameter Name="id" Type="Int32"></asp:Parameter>
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="amtid" Type="Int32"></asp:Parameter>
<asp:Parameter Name="mitgliedid" Type="Int32"></asp:Parameter>
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="amtid" Type="Int32"></asp:Parameter>
<asp:Parameter Name="mitgliedid" Type="Int32"></asp:Parameter>
<asp:Parameter Name="id" Type="Int32"></asp:Parameter>
</UpdateParameters>
</asp:SqlDataSource>
**
代码隐藏:
**
protected void SqlDataSource1_Updating(object sender, SqlDataSourceCommandEventArgs e)
{
DropDownList ämterDD = (DropDownList)GridView1.FindControl("ämterDD");
DropDownList mitgliederDD = (DropDownList)GridView1.FindControl("mitgliederDD");
if(mitgliederDD != null && ämterDD != null)
{
SqlDataSource2.UpdateParameters["amtid"].DefaultValue = ämterDD.SelectedValue;
SqlDataSource2.UpdateParameters["mitgliedid"].DefaultValue = mitgliederDD.SelectedValue;
}
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
DropDownList ämterDD = (DropDownList)((GridView)sender).FindControl("ämterDD");
DropDownList mitgliederDD = (DropDownList)((GridView)sender).FindControl("mitgliederDD");
if (ämterDD != null && mitgliederDD != null)
{
SqlDataSource2.UpdateParameters["amtid"].DefaultValue = ämterDD.SelectedValue;
SqlDataSource2.UpdateParameters["mitgliedid"].DefaultValue = mitgliederDD.SelectedValue;
}
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
DropDownList ämterDD = (DropDownList)((GridView)sender).FindControl("ämterDD");
DropDownList mitgliederDD = (DropDownList)((GridView)sender).FindControl("mitgliederDD");
if(ämterDD != null && mitgliederDD != null)
{
SqlDataSource2.UpdateParameters["amtid"].DefaultValue = ämterDD.SelectedValue;
SqlDataSource2.UpdateParameters["mitgliedid"].DefaultValue = mitgliederDD.SelectedValue;
}
}
谁能帮助我如何在后面的代码中设置 GridView 的更新参数?!
【问题讨论】:
标签: asp.net gridview dropdown sqldatasource updating