2011-02-22 50 views
0

添加的GridView鑑於這樣定義GridView控件:問題以編程的行具有預先定義的列

<asp:GridView 
     ID="AttachedFilesGridView" 
     runat="server" 
     AllowSorting="true" 
     AllowPaging="false" 
     CellPadding="5" 
     AutoGenerateColumns="false" 
     CssClass="wsajax_DlgCodeBox"> 
     <Columns> 
     <asp:TemplateField> 
      <ItemTemplate> 
      <asp:CheckBox ID="CheckSelect" runat="server" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:BoundField Datafield="FilePath" HeaderText="File Path" SortExpression="FilePath" /> 
     <asp:BoundField Datafield="AttachmentID" HeaderText="Attachment ID" /> 
     </Columns> 
    </asp:GridView> 

我試圖生成使用此代碼在C#在服務器側的網格視圖中的行:

DataTable dt = new DataTable(); 
dt.Columns.Add(new DataColumn("CheckSelect", typeof(CheckBox))); // <<<--- ????? 
dt.Columns.Add(new DataColumn("FilePath", typeof(string))); 
dt.Columns.Add(new DataColumn("AttachmentID", typeof(string))); 

string errMsg = String.Empty; 
char[] delimiters = { ',' }; 
string[] pendingsIDs = PendingFileAttachments.Value.Split(delimiters,  StringSplitOptions.RemoveEmptyEntries); 
foreach (string adapterID in pendingsIDs) 
{ 
    FileAdapter adapter = FileAdapter.LoadFileAdapter(profile, new Guid(adapterID), ref errMsg); 
    if (adapter != null) 
    { 
     DataRow dr = dt.NewRow(); 
     CheckBox cb = new CheckBox(); 
     cb.Checked = FileAdapter.IsReserved; 
     cb.ID = "CheckSelect"; 
     dr["CheckSelect"] = cb; <<<---????? 
     dr["FilePath"] = adapter.GetPartialFilePath(); 
     dr["AttachmentID"] = adapter.ObjectID.ToString("N"); 
     dt.Rows.Add(dr);  
    } 
} 

AttachedFilesGridView.DataSource = dt; 
AttachedFilesGridView.DataBind(); 

問題是這樣的:

的「文件路徑」和「附件ID」被在網格正確設置字段,然而,複選框控件從不正確設置;它總是沒有檢查。

我的問題:

我如何獲得這個複選框字段,因爲我創造了新行從C#設置?

P.S.我不知道我是否正確創建行。

回答

2

使用變化antisanity建議,你需要改變ASPX標記像這樣:

.... 
     <ItemTemplate> 
     <asp:CheckBox ID="CheckSelect" runat="server" Checked='<%# Eval("CheckSelect")' /> 
     </ItemTemplate> 
.... 
+0

謝謝。 Eval宏做了詭計! – Escovado 2011-02-23 00:16:14

1

我相信你會想讓列(在DataTable中)類型爲布爾型而不是複選框,因爲它應該是數據源。

+0

並將其設置爲'cb.Checked'代替cb'的'。 – mellamokb 2011-02-22 23:52:06

+0

我嘗試了一個boolen類型並將其設置爲true,但這沒有什麼區別。 – Escovado 2011-02-22 23:52:37

相關問題