ASP GridView DropdownList编辑/更新

时间:2017-11-17 12:07:59

标签: asp.net gridview dropdown sqldatasource updating

我在ASP-Page上有一个GridView绑定到带有外键的表,其中Columns有DropdownLists,TEXT收集到VALUES,在其他表中。

当我编辑GridView的行时,我在CodeBehind中添加了Dropdown的文本。这一切都很好。但是当UPDATING我试图手动设置DataSource的UpdateParameters时,我想检查DropDowns中的哪些值被选中。但是在我尝试过的每一个事件中,下拉列表都是NULL。

我试过了:

  • GridView的RowUpdating-和RowEditing事件
  • 更新 - 数据源事件

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的更新参数?!

1 个答案:

答案 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);
}