데이터 바인딩을 사용하여 샘플을 단순화 할 수 있도록 준비했습니다.
최초의 영문 코드, 내가 단일 레코드의 유효성을 검사 ValidateRecord을 사용한 통지 걸릴 :
<asp:GridView ID="GridView1" runat="server" DataKeyNames="Id" DataSourceID="ObjectDataSource1" AutoGenerateColumns="true">
<Columns>
<asp:TemplateField HeaderText="Check">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Enabled='<%# ValidateRecord(Eval("RowState")) %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetItems" TypeName="WebTester.DataGridTester">
</asp:ObjectDataSource>
이제 끝 뒤에 코드를. GetItems 일부 데모 데이터를 생성하는 데에만 사용됩니다, 요점은 ValidateRecord 내부 :
첫 번째 행의 체크 박스가 활성화되어, 두 번째는 사용할 수 없습니다 :
public bool ValidateRecord(object value)
{
return (value as int?) == 1;
}
public static DataTable GetItems()
{
//generate some demo data...
DataTable dt = new DataTable();
dt.Columns.Add("RowState", typeof(int?));
dt.Columns.Add("Id",typeof(int));
dt.Columns.Add("col1", typeof(string));
dt.Columns.Add("col2", typeof(string));
dt.Columns.Add("col3", typeof(string));
dt.Columns.Add("col4", typeof(string));
dt.Columns.Add("col5", typeof(string));
dt.Columns.Add("col6", typeof(string));
dt.Columns.Add("col7", typeof(string));
dt.Rows.Add(new object[] {1, 1,"some","data","in","first","row", ".", ".." });
dt.Rows.Add(new object[] {0, 2, "second", "record", "inside", "demo", "datatable", "-", "--" });
return dt;
}
그래서 최종 결과는 다음과 같이 표시됩니다.
해피 코딩!
감사합니다. 답변이 매우 유용했습니다. – esteban