2010-04-20 29 views
0

我有一個GridView綁定到我手動創建的dataTable。 GridView和dataTable都包含2列,Name和isBusy。我的GridView看起來像這樣從ASPX的CheckBox列中編輯/訪問數據:GridView - c#

<Columns> 
    <asp:BoundField HeaderText="Name" DataField="Name" SortExpression="Name">   
    </asp:BoundField>  
    <asp:CheckBoxField DataField="isBusy" HeaderText="Busy" SortExpression="isBusy" /> 
</Columns> 

工作正常,除非Busy列是不可編輯的,除非您將特定的行設置爲編輯模式。我需要檢查整個複選框。所以我轉換柱的模板,所以列是這樣的:

<Columns> 
    <asp:BoundField HeaderText="Name" DataField="Name" SortExpression="Name">   
    </asp:BoundField>  
    <asp:TemplateField HeaderText="Busy" SortExpression="isBusy"> 
     <ItemTemplate> 
     <asp:CheckBox ID="isBusy" runat="server" Checked='<%# Eval("isBusy") %>' oncheckedchanged="CheckBoxBusy_CheckedChanged" /> 
     </ItemTemplate> 
    </asp:TemplateField>  
</Columns> 

現在,這將引發一個運行時錯誤:

System.InvalidCastException was unhandled by user code 
    Message="Specified cast is not valid." 
    Source="App_Web_zzjsqlrr" 
    StackTrace: 
     at ASP.projects_aspx.__DataBinding__control24(Object sender, EventArgs e) in c:\Project\Users.aspx:line 189 
     at System.Web.UI.Control.OnDataBinding(EventArgs e) 
     at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) 
     at System.Web.UI.Control.DataBind() 
     at System.Web.UI.Control.DataBindChildren() 
    InnerException: 

任何想法,爲什麼發生這種情況?我需要的下一步是知道如何設置和獲取複選框的狀態(無法找到如何手動檢查複選框)。

回答

0

好吧,我過去的錯誤coverting複選框值一個布爾值:

選中= '<%#Convert.ToBoolean(EVAL( 「isBusy」))%>'

現在,我似乎無法找到如何手動檢查特定複選框並在單擊複選框時生成事件。有任何想法嗎?

+0

難道你不能只通過從特定列中獲取複選框來檢查? – Ruben 2011-09-09 10:13:44