我是初学者,想问一下用gridview更新数据的问题。
假设我有两个表
表一:users
UserID/UserName/Password/CountryID表二:Countrys
CountryID/CountryName在gridview或其他控制里点了编辑 users表里的一条数据以后,我想把 Country做为下拉列表让用户选择,但是默认选择的用户原来填写国家对对应ID的国家名称。我在编辑模板里怎么弄也没现实这个效果,请大家帮忙

解决方案 »

  1.   

    1.为你的下拉框单独生成一个数据源控件,并绑定国家表数据
    2.在gridview的RowDataBound事件中找到你的下拉框
    3.让下拉框显示用户填写的国家1你应该知道下面是2、3
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
      //假设你的下拉框为Drop1
      DropDownList dropTemp = (DropDownList)e.Row.FindControl("Drop1");
      dropTemp.selectedValue = "你传过来的国家的id";
      //国家的id看你怎么传了,你可以用一个HiddenField,它的值绑定用户填写的国家对应的ID
      //然后用上面同样的方法,取得HiddenField的引用,并负值给下拉框
      //HiddenField hdTemp = (HiddenField)e.Row.FindControl("HiddenField1");
      //dropTemp.selectValue = hdTemp.value;
      //更新的时候就看你的需要了,呵呵,有什么问题再说
    }
      

  2.   

    楼主,变通一下撒,我给的代码是思路,要扩展一下,呵呵
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
      if(e.Row.RowType.ToString() == "DataRow")    //判断是否数据行
      {
        if(e.Row.FindControl("Drop1") != null)     //判断是否是编辑行
        {
          //假设你的下拉框为Drop1
          DropDownList dropTemp = (DropDownList)e.Row.FindControl("Drop1");
          dropTemp.selectedValue = "你传过来的国家的id";
          //国家的id看你怎么传了,你可以用一个HiddenField,它的值绑定用户填写的国家对应的ID
          //然后用上面同样的方法,取得HiddenField的引用,并负值给下拉框
          //HiddenField hdTemp = (HiddenField)e.Row.FindControl("HiddenField1");
          //dropTemp.selectValue = hdTemp.value;
          //更新的时候就看你的需要了,呵呵,有什么问题再说
        }
      }
    }
      

  3.   

    我的代码是:
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType.ToString() == "DataRow")
            {
                if (e.Row.FindControl("CountryID") != null)
                {
                    DropDownList dropTemp = (DropDownList)e.Row.FindControl("CountryID");
                    HiddenField hdTemp = (HiddenField)e.Row.FindControl("HiddenField1");
                    dropTemp.SelectedValue = hdTemp.Value;
                }
            }
        }按F5运行,点编辑后最后那行:dropTemp.SelectedValue = hdTemp.Value; 出错
    提示:未将对象引用设置到对象的实例。我是刚刚学,太笨了。。
      

  4.   

    有没有在页面上的模板里面添加HiddenField啊?
    如果没有的话会出现这样的提示
    你设置一个断点看看,程序有没有找到你要找的两个控件