c# - 下拉列表避免c#中的回发
问题描述
我在 gridview 上有一个下拉列表控件 (ddl)。
在ddl控件“A”和“B”和“C”中有这些值。
当下拉列表控件 (ddl) 中的选定值发生更改时,我需要避免回发页面。
这是有效的。
但是此代码不起作用,因为它不再可能编辑 gridview 行并且CommandName="Edit"
gridview 中的 已停止工作。
<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>
推荐阅读
- python - 在 python 中将 lambda 与 groupby 一起使用时的 SettingWithCopyWarning
- html - 如何使框(div)位于我之前放置的框下方
- ruby-on-rails - 我应该写什么来代替 ***** 或者我如何在 RSpec 中访问这个本地变量
- python - 如何用python循环遍历json?
- kernel - 内核中的 OpenCL 分析功能
- django - 在 django-allauth: integrations with Kakao 中,我输入了文档中的所有键
- python - 迭代 Json 并在 python 中构建新的 json
- oracle - 使用 for 循环删除前 10 行
- reactjs - 实现 redux-persist
- javascript - 表单中的标签标签未出现