GridView上的弹出式引导程序模型使用RowCommand事件进行单击

我有一个Bootstrap Model弹出窗口:

        

而GridView是:

 
<asp:Label ID="lblID" runat="server" Visible="false" Text=''> <asp:Label ID="lblName" runat="server" Text='' > Events

这是RowCommand事件:

 protected void gvBanquet_RowCommand(object sender, GridViewCommandEventArgs e) { GridViewRow row = (GridViewRow)(((Control)e.CommandSource).NamingContainer); int index = row.RowIndex; string id = GetTextFromGridViewLabel(gvBanquet,index,"lblID"); string name = GetTextFromGridViewLabel(gvBanquet, index, "lblName"); switch (e.CommandName) { case "EditRow": lblID.Text = id; txtName.Text = name; break; default: break; } } 

我的问题是当我点击GridView中的编辑按钮时,Bootstrap模型没有弹出,其中包含来自GridView行的idname

这可以是一个解决方案,并遵循以下步骤:

  • 在另一个UpdatePanel中添加GridView。
  • 在第一个UpdatePanel upModel触发GridView RowCommand事件,如:

         
  • 最后在RowCommand事件中运行StringBuilder代码:

     case "EditRow": lblID.Text = id; txtName.Text = name; System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append(@""); ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "MyModal", sb.ToString(), false); break; 

它会在编辑点击时显示弹出窗口:

在此处输入图像描述

我会尝试通过从GridView本身获取值来保存PostBack。 仅当GridView中存在Modal中所需的全部或几乎所有值时,此方法才有效。 如果不是,你确实会使用PostBack。

在下面的代码片段中,模态绑定到GridView tr并在单击时打开。 然后脚本将循环所有单元格并将其值放在模态TextBoxes中。 出于演示目的,我已经为GridView行添加了一个属性,因此您可以发送不希望在GridView中显示但在模式中需要的值。

     <%# Eval("Column 1") %>     <%# Eval("Column 2") %>     <%# Eval("Column 3") %>       

并且RowDataBound事件的代码隐藏方法将额外属性添加到行。

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { //check if the row is a datarow if (e.Row.RowType == DataControlRowType.DataRow) { //cast the dataitem back to a row DataRowView row = e.Row.DataItem as DataRowView; e.Row.Attributes.Add("extravalue", row["Column 4"].ToString()); } }