【发布时间】:2020-04-18 20:56:47
【问题描述】:
我在 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();
}
}
}
}
【问题讨论】:
-
如果您可以发布您的实际源代码,我会尽力提供帮助。缺少其他 ItemTemplates 和
EditItemTemplates。 -
@OguzOzgul 另一个
ItemTemplates和EditItemTemplates没有丢失,因为编辑不是在gridview 中执行的,而是在弹出窗口中打开的不同网页上执行的。请参阅有问题的EDIT。 -
现在你拥有无与伦比的
<Columns>。 -
@GSerg 很抱歉复制/粘贴代码错误
标签: c#