私は、そのコンポーネントの大部分をオンザフライで生成するためのC#aspx Webアプリケーションを用意しています。いくつかのチェックボックスを表示するためのGridViewがあります。グリッドビューの動的チェックボックス
実行時のコンポーネントは表示されませんが、名前空間はSystem.UI.Webcontrols.CheckBox
です。
私はチェックボックスを表示する必要があります。どのようにこれを修正することができますか?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound" />
</div>
</form>
</body>
</html>
[aspx.cs]
namespace ChkBoxOnGridView
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
PopulateGridView();
}
protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
CheckBox cb = new CheckBox();
e.Row.Cells[1].Controls.Add(cb);
}
}
private void PopulateGridView()
{
GridView1.DataSource = null;
GridView1.Columns.Clear();
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("DTA", typeof(System.String)));
dt.Columns.Add(new DataColumn("Is Visible", typeof(System.Web.UI.WebControls.CheckBox)));
CheckBox chkbx = new CheckBox();
chkbx.Checked = true;
DataRow row1 = dt.NewRow();
row1["DTA"] = "Some Text";
row1["Is Visible"] = chkbx;
dt.Rows.Add(row1);
foreach (DataColumn col in dt.Columns)
{
BoundField bField = new BoundField();
bField.DataField = col.ColumnName;
bField.HeaderText = col.ColumnName;
GridView1.Columns.Add(bField);
}
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
}
私のコードに基づいて実用的なモデルを表示してください、私は非常に新しいです#。 – antowizzy
私があなたに見せていることは何も難しいことではありません。ただし、CustomerGridViewをDataBindし、RowDataBoundイベントを次のようなコードで処理するだけで済むことを明確にします。 e.Row.DataItemを各モデルクラスにキャストした各行に関連付けられたデータにアクセスすることができます。これにより、そのプロパティに簡単にアクセスしてコントロールの追加方法を簡単に決定できます。 – JotaBe
どのようにして、チェックされたchkbxのステータスを取得し、最初の列の繰り返しである3番目の列を削除するためにcbを作成しますか?私はコードを更新しました。 – antowizzy