首页 > 解决方案 > 更改父gridview的rowediting事件的下拉选择值

问题描述

我在更新面板中有这个网格视图:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" DataKeyNames="id" DataSourceID="" BackColor="White"
BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" ForeColor="Black"
GridLines="Horizontal" Height="100%" Width="100%" HorizontalAlign="Justify" CssClass="table-responsive-lg table-striped table-hover" CellPadding="5" Style="text-align: center" OnRowEditing="GridView1_RowEditing">

行上的这个编辑按钮:

<ItemTemplate>
<asp:LinkButton ID="btnSelect" runat="server" CausesValidation="False" CommandName="Edit"
ToolTip="Seleziona"><i class="far fa-hand-point-up fa-3x" aria-hidden="true"></i></asp:LinkButton>
</ItemTemplate>

EditItemTemplate 中的这个下拉列表:

    <asp:TemplateField HeaderText="Mittente" SortExpression="Mittente">
    <ItemTemplate>
        <asp:Label ID="Label3" runat="server" Text='<%#: Bind("Mittente") %>' CssClass="content"></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
        <div style="text-align: left">
            <div class="wrapper">
                <asp:Button ID="btnPrendiMail" runat="server" Text="Prendi" OnClick="btnPrendiMail_Click" CssClass="btn btn-default" />
                <asp:SqlDataSource ID="sqlClienti" runat="server"
                    ConnectionString="<%$ ConnectionStrings:dbVulcanoConnectionString %>"
                    SelectCommand="select idcliente,RagSociale,concat(ragsociale,' [' ,idcliente, ']') as Descr from clienti order by RagSociale"></asp:SqlDataSource>
                <asp:DropDownList ClientIDMode="Static" OnSelectedIndexChanged="ddlClienti_SelectedIndexChanged" ID="ddlClienti" runat="server" Font-Size="X-Large" Font-Bold="True" AutoPostBack="true" DataSourceID="sqlClienti" DataTextField="Descr" DataValueField="idCliente" AppendDataBoundItems="true" CssClass="select2-single form-control-div" >
                    <asp:ListItem Text="-- Cerca Cliente per ID o Ragione Sociale --" Value="0" Selected="True"></asp:ListItem>
                </asp:DropDownList>
            </div>

            <asp:Label ID="lblEmailMittente" ClientIDMode="Static" runat="server" Text='<%#: Bind("Mittente") %>' CssClass="content"
                Visible="false"></asp:Label>
        </div>
    </EditItemTemplate>
    <ItemStyle Width="10%" />
</asp:TemplateField>

当按下编辑按钮时,我会更改下拉列表的选定值,在 gridview 的 RowEditing 事件上执行此子例程:

Protected Sub GridView1_RowEditing(sender As Object, e As GridViewEditEventArgs)
        Dim gvRow As GridViewRow = GridView1.Rows.Item(e.NewEditIndex())
        Dim ddlClienti As DropDownList = TryCast(gvRow.FindControl("ddlClienti"), DropDownList)
        Dim lblEmailMittente As Label = TryCast(gvRow.FindControl("lblEmailMittente"), Label)

        If dbVulcano.emails.Any(Function(m) m.email = lblEmailMittente.Text) Then
            Dim email As emails = dbVulcano.emails.Where(Function(m) m.email = lblEmailMittente.Text).SingleOrDefault
            ddlClienti.SelectedValue = email.rfCliente
            ddlClientiIndexChanged()
        End If
    End Sub

但是在调试它时,我看到 ddlClienti = Nothing 所以例程失败。这样做的正确方法是什么?谢谢

标签: asp.netvb.netgridviewdropdown

解决方案


我在模板字段中使用计时器做了同样的事情


推荐阅读