0

我有一个DataTable 我在代码文件中创建的,然后我将它绑定到GridView我使用 Visual Studio 的拖放功能创建的一个。

但是,我在GridView其中添加了一些不受支持的列(如果我错了,请纠正我)DataTable,例如 Hyperlink-Column 或 CheckBox-Column。

我想使用DataTable从特定列中生成的值派生的值来构建超链接列和复选框 id。我知道我可以使用它DataNavigateUrlfields来构建动态链接,但是我该如何使用DataTable稍后绑定的呢?

我还需要 中的列出GridView现在DataTable.

上述任何帮助将不胜感激。任何替代方案也值得赞赏。

4

3 回答 3

1

以声明方式添加的控件将首先创建,然后是数据绑定/手动创建(记录在页面的生命周期中,搜索“以声明方式创建的控件”)。由于您希望声明性列最后,您需要一个技巧:

您可以使用RowDataBound更改顺序,以便这些AutoGenerated列之后是您的其他列,例如HyperlinkCheckBox列:

protected void gridOffers_RowDataBound(object sender, GridViewRowEventArgs e)
{
    TableCell cell = e.Row.Cells[0];
    e.Row.Cells.RemoveAt(0);
    //Move first to the end
    e.Row.Cells.Add(cell);
    cell = e.Row.Cells[0];
    e.Row.Cells.RemoveAt(0);
    //Move second to the end
    e.Row.Cells.Add(cell);
}

但是,我在 GridView 中添加了一些在 DataTable 中不受支持的列(如果我错了,请纠正我),例如 Hyperlink-Column 或 CheckBox-Column。

它们不需要在 DataTable 中支持,但在 GridView 中。表包含您的数据,网格包含视图。

于 2012-10-11T12:53:36.157 回答
1

您可以尝试使用此代码 - 基于RowDataBound

<Columns>
       <asp:TemplateField>
              <ItemTemplate>
                  <asp:HyperLink ID="HyperLink1" runat="server" Text=""></asp:HyperLink>
              </ItemTemplate>
       </asp:TemplateField>
       <asp:TemplateField>
              <ItemTemplate>
                  <asp:CheckBox ID="CheckBox1" runat="server" />
              </ItemTemplate>
       </asp:TemplateField>

</Columns>

您可以使用事件 RowDataBound 调整 datbound,我添加了 HyperLink 控件,以便根据需要自定义链接。

 void GridView_RowDataBound(Object sender, GridViewRowEventArgs e)
 {
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
      var hyperLink = (HyperLink)e.Item.FindControl("HyperLink1");
      hyperLink.NavigateUrl ="...."; 

      var checkBox = (CheckBox)e.Item.FindControl("CheckBox1");
      checkBox.Checked =....


    }

  }
于 2012-10-11T12:54:23.327 回答
0

如果您使用的是数据表,那么有一种简单的方法来追加列

DataTable yourDataTable = new DataTable();

Load yourDataTable by DataReader or DataAdapter

DataColumn newColumn = yourDataTable.Columns.Add("Total", typeof(Int32));

之后,您可以将此数据表绑定到您的 Gridview 中。 微软

于 2016-12-09T08:38:42.613 回答