【问题标题】:ASP GridView DropdownList EDIT/UPDATEASP GridView DropdownList 编辑/更新
【发布时间】: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


    【解决方案1】:

    此代码将帮助您更新网格视图数据。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 2018-04-25
      • 2018-04-29
      • 1970-01-01
      • 2020-01-13
      • 1970-01-01
      • 2010-10-24
      相关资源
      最近更新 更多