0

DataTable コード ファイルで作成した があり、後で Visual Studio のドラッグ アンド ドロップ機能を使用して作成した にバインドしますGridView

ただし、Hyperlink-Column や CheckBox-Column など、サポートされていない列をいくつか追加しましたGridView(間違っている場合は訂正してください) 。DataTable

DataTable特定の列から生成された値から派生した値を使用して、ハイパーリンク列とチェックボックス ID を作成したいと思います。を使用して動的リンクを作成できることはわかっていますが、後でバインドされる でDataNavigateUrlfieldsこれを行うにはどうすればよいですか?DataTable

GridViewの列の後に の列を表示する必要もありますDataTable

上記のヘルプは大歓迎です。代替案も大歓迎です。

4

3 に答える 3

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 に答える
1

宣言的に追加されたコントロールが最初に作成され、次にデータバインド/手動で作成されます (ページのライフサイクルで文書化され、 「宣言的に作成されたコントロール」を検索してください)。宣言型の列を最後にしたいので、ハックが必要です:

または列のような他の列が列の後に続くRowDataBoundように、順序を変更するために使用できます。AutoGeneratedHyperlinkCheckBox

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);
}

ただし、Hyperlink-Column や CheckBox-Column など、サポートされていない列を GridView に追加しました (間違っている場合は修正してください)。

これらは、DataTable ではなく GridView でサポートする必要があります。テーブルにはデータが含まれ、グリッドにはビューが含まれます。

于 2012-10-11T12:53:36.157 に答える