我在ASP-Page上有一个GridView绑定到带有外键的表,其中Columns有DropdownLists,TEXT收集到VALUES,在其他表中。
当我编辑GridView的行时,我在CodeBehind中添加了Dropdown的文本。这一切都很好。但是当UPDATING我试图手动设置DataSource的UpdateParameters时,我想检查DropDowns中的哪些值被选中。但是在我尝试过的每一个事件中,下拉列表都是NULL。
我试过了:
<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的更新参数?!
答案 0 :(得分:0)
此代码将帮助您更新网格视图数据。
protected void GridView1_RowUpdating(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow && gridView.EditIndex == e.Row.RowIndex)
{
DropDownList ddlämter = (DropDownList)e.Row.FindControl("ddlämter");
Label LabelAe = (Label)e.Row.FindControl("LabelAe");
string strValue = Convert.ToString(LabelAe.Text);
// Bind Your Drop down Here
ddlämter.DataSource = ds;
ddlämter.DataTextField = "dbRequestType";
ddlämter.DataValueField = "dbID";
ddlämter.DataBind();
ddlämter.Items.Insert(0, new ListItem("--Choose--", "0"));
if (strValue != null && strValue != "")
ddlämter .Items.FindByValue(strValue).Selected = true;
}
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
DropDownList ddlämter = DropDownList)gvDeliverable.Rows[e.RowIndex].FindControl("ämterDD");
SqlDataSource2.UpdateParameters["amtid"].DefaultValue = Convert.ToInt32(ddlämter.SelectedValue);
}