我做的一个Gridview,里面的编辑事件是我另外写的,Gridview里面添加的有自定义属性列。现在的情况是点击编辑之后,所有自定义的属性列里面的值全部清空,而在实际操作中想在点击编辑之后,控件中能保留编辑之前的值。
请问各位朋友,这个该怎么实现啊?

解决方案 »

  1.   

    编辑模版中的 Eval改成Bind
      

  2.   


            void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
            {
                GridView1.EditIndex = e.NewEditIndex;   //设置传入的索引行为编辑状态
                my_com.Connection = my_con;
                creat_com();
                my_da.SelectCommand = my_com;
                data_bind(GridView1);
            }
    这样的可以吗?
      

  3.   

    编辑模板中是dropdownlist的都是绑定另外的数据源,还有一个是JavaScript日历脚本也会清空。并且用的都是bind没有用eval
      

  4.   

    <editTemplate>
    <asp:TextBox id="txt" runat="server" Text="<%# Eval("name")%>"/>
    </EditTemplate>
      

  5.   

    <ItemTemplate> 
    <asp:DropDownList ID="ddlSort" runat="server" Width="98%">
      </asp:DropDownList>
     <asp:HiddenField ID="Hd_Sort" runat="server" Value='<%# Eval("BalSort")%>' />
    </ItemTemplate>
     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();
      }