2011-09-09 23 views
4

チェックボックスが無効になっているグリッドビューがあります。グリッドビューにもある編集ボタンをクリックすると、それらを有効にしたいと思います。ここでは、ここで私が使用しようとしているコードは、マークアップCheckBox Gridview有効化と無効化

<asp:GridView ID="grd_Bookcode" runat="server" DataSourceID="sqldatasource1" 
autogeneratecolumns="False" onrowcommand="grd_Bookcode_RowCommand1" 
onrowdatabound="grd_Bookcode_RowDataBound"> 
<Columns> 
    <asp:BoundField DataField="BookCode" HeaderText="Book Code"/> 
    <asp:BoundField DataField="mag_name" HeaderText="Name"/> 
    <asp:BoundField DataField="display_date" HeaderText="Display Date"/> 
    <asp:TemplateField HeaderText = "PC"> 
     <ItemTemplate> 
      <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Eval("82_PC").ToString() == "1" ? true:false %>' Enabled="false" /> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="eReader"> 
     <ItemTemplate> 
      <asp:CheckBox ID="CheckBox2" runat="server" Checked='<%# Eval("83_eReader").ToString() == "1" ? true:false %>' Enabled="false" /> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="Tablet"> 
     <ItemTemplate> 
      <asp:CheckBox ID="CheckBox3" runat="server" Checked='<%# Eval("84_Tablet").ToString() == "1" ? true:false %>' Enabled="false"/> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="Mobile"> 
     <ItemTemplate> 
      <asp:CheckBox ID="CheckBox4" runat="server" Checked='<%# Eval("85_Mobile").ToString() == "1" ? true:false %>' Enabled="false" /> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:TemplateField HeaderText="None"> 
     <ItemTemplate> 
      <asp:CheckBox ID="CheckBox5" runat="server" Checked='<%# Eval("86_None").ToString() == "1" ? true:false %>' Enabled="false" /> 
     </ItemTemplate> 
    </asp:TemplateField> 
    <asp:CommandField ShowEditButton="True" /> 
</Columns> 

そしてだています。基本的には、編集ボタンを押すと、チェックボックス自体を有効にします。何らかの理由で、ページが再び読み込まれたときにチェックボックスはまったく有効になりません。私はちょうど編集ボタンがクリックされた後に "チェックボックス1"を有効にしようとし始めたが、最終的に5つのチェックボックスすべてを有効にしたい。

protected void grd_Bookcode_RowCommand1(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "Edit") 
     { 
      int index = Convert.ToInt32(e.CommandArgument); 

      GridViewRow row = grd_Bookcode.Rows[index]; 

      CheckBox chk = (CheckBox)row.FindControl("CheckBox1"); 
      chk.Enabled = true; 


     } 
    } 
+0

は、あなたが使用しているコードで何が起こっていますか? –

+0

このコードでチェックボックスを有効にしていませんか?あなたはその質問についてより明確になりますか? – Praveen

+0

とは何ですか?何がうまくいかない?デバッグする場合、このコード行に到達するように管理しますか?CheckBox chk =(CheckBox)row.FindControl( "CheckBox1"); ? –

答えて

3

Editコントロールが標準コントロールと異なるようにするには、 "EditItemTemplate"を使用する必要があります。これにより、行のモードが変更されたときに、編集行が異なるコントロール、値などを持つことができます。

例:

 <Columns> 
      <asp:TemplateField HeaderText="PC"> 
       <ItemTemplate> 
        <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Eval("82_PC").ToString() == "1" ? true:false %>' Enabled="false" /> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:CheckBox ID="CheckBox1" runat="server" Checked="true" Enabled="false" /> 
       </EditItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
+0

完璧に、私が必要としていただけで、束になりました – Jeff

+0

あなたの問題を解決すれば答えとしてマークするのを忘れないでください! – Zachary

+0

@ Zacharyありがとう!私はこれまでAGESのためにこれを探してきました。素敵でシンプルなものでした! –

1

私はGridViewコントロールのすべての行をあなたは可能性ループを推測し、以下のようなチェックボックスに何かを有効にします。このことができます

protected void grd_Bookcode_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "Edit") 
     { 
      for (int index = 0; index < GridView1.Rows.Count; index++) 
      { 
       CheckBox chk = grd_Bookcode.Rows[index].FindControl("CheckBox" + index + 1) as CheckBox; 
       chk.Enabled = true; 
      } 
     } 
    } 

希望を!

+0

そうです、それは私がやろうとしていたものですが、edititemtemplateを使うのはずっと簡単な方法でした。 – Jeff