page_load(){
ViewState["commtype"] = db.getData();
}                  <EditItemTemplate>
                                类型:<asp:DropDownList ID="drowdownlist" runat="server" DataSource='<%# (DataTable)ViewState["commtype"] %>'
                                    SelectedValue='<%# Eval("id") %>' DataTextField="title" 
                                    DataValueField="id"  />
                            </EditItemTemplate>这样无法绑定到数据到列表上
并且,我需要点击两次"编辑"才会显示编辑框,为什么呢?
我已经在
   protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex = e.NewEditIndex;    }
如果这样写,就需要点击两次才显示
如果
 protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex = e.NewEditIndex;
GridView1.DataBind();
    }
这样写,就会显示空白的gridview

解决方案 »

  1.   

    <ItemTemplate> 
    <asp:DropDownList ID="ddlSort" runat="server" Width="98%">
      </asp:DropDownList>
     <asp:HiddenField ID="Hd_Sort" runat="server" Value='<%# Eval("BalSort")%>' />
    </ItemTemplate>
    if(!IsPostBack)BindData();
     protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
      {
      if (e.Row.RowIndex != -1)
      { if (e.Row.RowState == DataControlRowState.Edit || e.Row.RowState == (DataControlRowState.Alternate | DataControlRowState.Edit))
      {
      ((DropDownList)e.Row.FindControl("ddlSort")).SelectedValue = ((HiddenField)e.Row.FindControl("Hd_Sort")).Value;
      }
      }
      } protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
      {
      gv.EditIndex = e.NewEditIndex;
      string strSort = ((DropDownList)gv.Rows[e.NewEditIndex].FindControl("ddlSort")).SelectedValue.Trim();
      gv.EditIndex = -1;
      BindData();
      } 
      

  2.   

     protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
      {
      GridView1.EditIndex = e.NewEditIndex;
       获取数据绑定GRIDVIEW的方法,而不是GridView1.DataBind();
      }