繁体   English   中英

Asp.Net C#:在jQuery对话框中添加GridView

[英]Asp.Net C#: Add GridView in jQuery Dialog

我正在尝试创建一个函数来动态显示DataGridView,让我们编写代码:

HtmlGenericControl div = new HtmlGenericControl("div");
div.ID = Guid.NewGuid().ToString();

GridView grid = new GridView();
grid.Attributes.Add("runat", "server");

foreach (GridColumnTemplate grdColumnTemplate in parameters.ColumnsTemplate)
{
    BoundField boundField = new BoundField();
    boundField.DataField = grdColumnTemplate.ValueFieldName;
    boundField.HeaderText = grdColumnTemplate.HeaderText;
    grid.Columns.Add(boundField);
}

grid.DataSource = parameters.DataSource;

div.Controls.Add(grid);

Controls.Add(div);

String cmd = "<script language=JavaScript> ShowGrid('{0}'); </script>\n";

Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowGrid",string.Format(cmd,div.ID));

这是ShowGrid函数:

function ShowGrid(idDiv) {
    var modal = $(idDiv).dialog({
        dialogClass: "no-close",
        modal: true,
        width: 500,
        resizable: false,
        draggable: false
    });
    modal.parent().appendTo($("form:first"));
}

但是,当执行代码时,我有一个错误,说要在“ runat = server”容器内输入gridview。 我尝试通过代码来做到这一点,但没有成功。

请帮我!

您可以通过以下方式实现它:

<a href="javascript:loadGridOnClick()">Load</a>
<div class="Modal">
     <asp:GridView id="grdExample" runat="server">
          // Grid Logic
     </asp:GridView>
</div>

我们具有前端结构,现在可以填充网格:

function loadGridOnClick() {
     $.ajax({
          url: '<%= Page.ResolveUrl("~/Services/GetGridForSample.ashx") %>',
          type: 'POST',
          data { ... } // If we have any data to populate our Grid.
          success: function () {
               // Our return object.
          }
     });

}

通过Ajax调用服务后,您只需编写后端代码,即可使用正确的数据填充Grid。 然后,您只需使用DataSourceDataBind 另一种方法是仅拥有我们的<div class="Modal"> ,然后您可以返回Object的集合并将其放置在自己的结构中。

那就是我要采取的方法,否则您可能会遇到Postback和状态信息的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM