[英]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.