簡體   English   中英

下拉列表避免 c# 中的回發

[英]Dropdownlist avoid postback in c#

我在 gridview 上有一個下拉列表控件 (ddl)。

在ddl控件“A”和“B”和“C”中有這些值。

當下拉列表控件 (ddl) 中的選定值發生更改時,我需要避免回發頁面。

這是有效的。

但是此代碼不起作用,因為不再可能編輯 gridview 行,並且 gridview 中的CommandName="Edit"已停止工作。

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="gvProducts"
                                  EventName="SelectedIndexChanged" />
    </Triggers>
    <ContentTemplate>
        <asp:GridView ID="gvProducts" AutoGenerateColumns="False" 
            EmptyDataText="no data" EnableViewState="true"
            runat="server" 
            DataKeyNames="ID" 
            HorizontalAlign="Center">
            <AlternatingRowStyle CssClass="altrows" />
            <Columns>
                <asp:TemplateField HeaderText="EDIT" ItemStyle-HorizontalAlign="Center">
                    <ItemTemplate>
                        <asp:ImageButton ID="imgbtnEdit" 
                             CommandName="Edit" runat="server"
                             ImageUrl="/Images/Edit.gif"
                             OnClientClick="return confirm('Confirm ?');" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="List" ItemStyle-HorizontalAlign="Center">
                    <ItemTemplate>
                        <asp:DropDownList runat="server"
                             ID="ddl"
                             AutoPostBack="true"
                             OnSelectedIndexChanged="ddl_SelectedIndexChanged">
                            <asp:ListItem Text="A" Value="A" />
                            <asp:ListItem Text="B" Value="B" />
                            <asp:ListItem Text="C" Value="C" />
                        </asp:DropDownList>
                    </ItemTemplate>
                </asp:TemplateField>
               <Columns>
            </asp:GridView>
        </ContentTemplate>
    </asp:UpdatePanel>

編輯

protected void gvProducts_RowEditing(object sender, GridViewEditEventArgs e)
{
    string sID = gvProducts.DataKeys[e.NewEditIndex].Value.ToString();

    string queryString = "sDetails.aspx?sID=" + sID.ToString().ToUpper();
    string newWin = "var Mleft = (screen.width/2)-(1200/2);var Mtop = (screen.height/2)-(700/2);window.open('" + queryString + "','_blank','height=700,width=1200,status=yes,toolbar=no,scrollbars=yes,menubar=no,location=no,top=\'+Mtop+\', left=\'+Mleft+\';');";
    ClientScript.RegisterStartupScript(this.GetType(), "pop", newWin, true);
}

protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
    GridViewRow gvr = (GridViewRow)(((Control)sender).NamingContainer);
    string sIDdataKey = this.gvProducts.DataKeys[gvr.RowIndex].Value.ToString();
    DropDownList duty = (DropDownList)gvr.FindControl("ddl");

    sql = String.Format(@" UPDATE `tbl` ");
    sql += String.Format(" SET `Letter`= ? ");
    sql += String.Format(" WHERE ID= ?; ");

    using (OdbcConnection cn =
            new OdbcConnection(ConfigurationManager.ConnectionStrings["cn"].ConnectionString))
    {
        using (OdbcCommand command =
                new OdbcCommand(sql, cn))
        {
            try
            {
                command.Connection.Open();
                command.Parameters.AddWithValue("param1", duty.SelectedItem.Value.ToString());
                command.Parameters.AddWithValue("param2", sIDdataKey.ToString());
                command.ExecuteNonQuery();
                BindData();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                command.Connection.Close();
            }
        }
    }
}

希望這可以幫到你。

<asp:GridView ID="GridView1" AutoGenerateColumns="False"
    EmptyDataText="no data" EnableViewState="true"
    runat="server"
    DataKeyNames="ID"
    HorizontalAlign="Center">
    <AlternatingRowStyle CssClass="altrows" />
    <Columns>
        <asp:TemplateField HeaderText="EDIT" ItemStyle-HorizontalAlign="Center">
            <ItemTemplate>
                <asp:ImageButton ID="imgbtnEdit"
                    CommandName="Edit" runat="server"
                    ImageUrl="/Images/Edit.gif"
                    OnClientClick="return confirm('Confirm ?');" />
            </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText="List" ItemStyle-HorizontalAlign="Center">
            <ItemTemplate>
                <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                    <Triggers>
                        <asp:AsyncPostBackTrigger ControlID="gvProducts"
                            EventName="SelectedIndexChanged" />
                    </Triggers>
                    <ContentTemplate>
                        <asp:DropDownList runat="server"
                            ID="ddl"
                            AutoPostBack="true"
                            OnSelectedIndexChanged="ddl_SelectedIndexChanged">
                            <asp:ListItem Text="A" Value="A" />
                            <asp:ListItem Text="B" Value="B" />
                            <asp:ListItem Text="C" Value="C" />
                        </asp:DropDownList>
                    </ContentTemplate>
                </asp:UpdatePanel>
            </ItemTemplate>
        </asp:TemplateField>

    </Columns>
</asp:GridView>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM