我的GridView中“帐号类型”字段用DropDownList显示,初始Enable=false,我想在点击“编辑”时让Enable=true,该如何实现,实在rowEditing事件中实现吗?<Columns>   
                   <asp:TemplateField HeaderText="帐号">
                       <EditItemTemplate>
                           <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Acc_ID") %>' EnableTheming="false" Width="30px"></asp:TextBox>
                       </EditItemTemplate>
                       <ItemStyle Width="50px" />
                       <ItemTemplate>
                           <asp:Label ID="Label1" runat="server" Text='<%# Bind("Acc_ID") %>'></asp:Label>
                       </ItemTemplate>
                   </asp:TemplateField>
                   <asp:TemplateField HeaderText="密码">
                       <EditItemTemplate>
                           <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("Acc_Psd") %>' EnableTheming="false" Width="30px"></asp:TextBox>
                       </EditItemTemplate>
                       <ItemStyle Width="50px" />
                       <ItemTemplate>
                           <asp:Label ID="Label2" runat="server" Text='<%# Bind("Acc_Psd") %>'></asp:Label>
                       </ItemTemplate>
                   </asp:TemplateField>
                   <asp:TemplateField HeaderText="帐号类型">   
                       <ItemTemplate>   
                           <asp:DropDownList ID="DropDownList1" runat="server" DataSource='<%# ddlbind()%>' Enabled="false">   
                           </asp:DropDownList>   
                       </ItemTemplate>   
                   </asp:TemplateField>  
                   <asp:TemplateField HeaderText="医院名称">
                       <EditItemTemplate>
                           <asp:Label ID="TextBox3" runat="server" Text='<%# Eval("Hos_Name") %>' EnableTheming="false" Width="50px"></asp:Label>
                       </EditItemTemplate>
                       <ItemStyle Width="100px" />
                       <ItemTemplate>
                           <asp:Label ID="Label3" runat="server" Text='<%# Bind("Hos_Name") %>'></asp:Label>
                       </ItemTemplate>
                   </asp:TemplateField>
                   <asp:TemplateField HeaderText="帐号状态">
                       <ItemTemplate>   
                           <asp:DropDownList ID="DropDownList2" runat="server" DataSource='<%# ddlbind2()%>' Enabled="false">   
                           </asp:DropDownList>   
                       </ItemTemplate>
                       <ItemStyle Width="50px" />
                   </asp:TemplateField>
                   <asp:CommandField ShowSelectButton="True">
                        <ItemStyle Width = "50" /> 
                   </asp:CommandField>  
                   <asp:CommandField ShowEditButton="True" />   
                   <asp:CommandField ShowDeleteButton="True" />   
               </Columns>

解决方案 »

  1.   

    EditItemTemplate里放个DropDownList吧。也不用设什么Enabled,默认就是可编辑。关键是设置好它的Bind.
      

  2.   

    你好像没搞明白<EditTemplate>里的东西只有在你点击“编辑”按钮时才会显示出来。默认GridView只会显示<ItemTemplate>内的东西。所以你设置Enabled=false什么的多余。
      

  3.   

    现在的问题是,如果放在<EditTemplate>,点击“编辑”时,它总是显示第一个索引的内容,我在什么地方怎么样根据动态绑定的数据源来选择要显示的内容?
      

  4.   

    这是两个模板的东西,什么都不用设置,普通项模板里直接放入DropDownList后设置Eabled=false
    在编辑项模板中,放入DropDownList什么都不用做,就ok了
      

  5.   

      <asp:Repeater ID="Repeater1" runat="server" 
                onitemdatabound="Repeater1_ItemDataBound" 
                onitemcommand="Repeater1_ItemCommand">
                <HeaderTemplate>
                    <table>
                    <tr>
                        <td>
                            ShipperID
                        </td>
                        <td>
                            CompanyName
                        </td>
                        <td>
                            Phone
                        </td>
                        <td>
                            下拉列
                        </td>
                    </tr>
                </HeaderTemplate>
                <ItemTemplate>
                    <tr>
                        <td>
                            <asp:Label ID="Label1" runat="server" Text='<%#Eval("ShipperID") %>'></asp:Label>
                        </td>
                        <td>
                            <asp:Label ID="Label2" runat="server" Text='<%#Eval("CompanyName") %>'></asp:Label>
                        </td>
                        <td>
                            <asp:Label ID="Label3" runat="server" Text='<%#Eval("Phone") %>'></asp:Label>
                        </td>
                        <td>
                            <asp:DropDownList ID="DropDownList1" runat="server" Enabled="false">
                            </asp:DropDownList>
                        </td>
                        <td>
                            <asp:Button ID="Button1" runat="server" Text="编辑" CommandName="Edit"/>
                        </td>
                    </tr>
                </ItemTemplate>
                <FooterTemplate>
                    </table></FooterTemplate>
            </asp:Repeater>后台
     protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Bind();
            }
        }
        public void Bind()
        {
            Repeater1.DataSource = from d in dc.Shippers select d;
            Repeater1.DataBind();
        }
     protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            if (e.CommandName == "Edit")
            {
                (e.Item.FindControl("DropDownList1") as DropDownList).Enabled = true;
            }
        }