公司项目开发过程中遇到的问题总结!

Datagrid中使用模板列嵌套radiobutton出现不可单选的问题,在网上找了很多方式,但是除了自写控件和html控件外没有其他的解决方案。

考虑只为一个页面专门来添加一个usercontrole有点浪费,所以,记录一下个人的解决方案。

问题:由于radiobutton在生成时会变成自动设置groupname,所以这里出现了不能单选的问题。 

解决思路:后台代码,通过查询datagrid的行号找到radiobutton控件,然后再判定当前的checked值。

 

前台代码:

 代码

 

后台代码:

代码
  1 public int CurrentSType
  2     {
  3         get { return (int)ViewState["SType"]; }
  4         set { value = (int)ViewState["SType"]; }
  5     }
  6 
  7     public int CurrentTemID
  8     {
  9         get { return (int)ViewState["STID"]; }
 10         set { value = (int)ViewState["STID"]; }
 11     }
 12 
 13     protected void Page_Load(object sender, EventArgs e)
 14     {
 15         if (!Page.IsPostBack)
 16         {
 17             ViewState["SType"= GetCurrSType();
 18             ViewState["STID"= GetCurrSTID();
 19             BindData();
 20             Check();
 21         }
 22     }
 23 
 24     private int GetCurrSType()
 25     {
 26         StringBuilder strSql = new StringBuilder();
 27         strSql.Append("SELECT F4_T300 FROM T_300 ");
 28         strSql.Append("INNER JOIN T_019 ON F50_T019=OID_T300 ");
 29         strSql.Append("WHERE F99_T019=1 AND F99_T300=1 AND OID_T019=");
 30         strSql.Append(SupplierId.ToString());
 31 
 32         return Convert.ToInt32(Bizproud.DataAccess.SqlHelper.ExecuteScalar(Bizproud.DataAccess.SqlHelper.connStr, CommandType.Text, strSql.ToString(), new SqlParameter[] { }));
 33     }
 34     private int GetCurrSTID()
 35     {
 36         StringBuilder strSql = new StringBuilder();
 37         strSql.Append("SELECT F50_T019 FROM T_019 ");
 38         strSql.Append("WHERE F99_t019=1 AND OID_T019=");
 39         strSql.Append(SupplierId.ToString());
 40 
 41         return
 42             (int)
 43             Bizproud.DataAccess.SqlHelper.ExecuteScalar(Bizproud.DataAccess.SqlHelper.connStr, CommandType.Text,
 44                                                         strSql.ToString(), new SqlParameter[] { });
 45     }
 46     private void BindData()
 47     {
 48         Bizproud.BLL.T_300BLL t300bll = new Bizproud.BLL.T_300BLL();
 49         dlTemplate.DataKeyField = "OID_T300";
 50         StringBuilder strSql = new StringBuilder();
 51         strSql.Append("SELECT OID_T300,F1_T300,F3_T300,F1_T134 ");
 52         strSql.Append("FROM T_300 ");
 53         strSql.Append("INNER JOIN T_134 ON T_300.F4_T300=T_134.OID_T134 ");
 54         strSql.Append("WHERE F4_T300=" + CurrentSType);
 55 
 56         dlTemplate.DataSource = t300bll.GetListBySql(strSql.ToString());
 57         dlTemplate.DataBind();
 58 
 59 
 60     }
 61 
 62     private void Check()
 63     {
 64         for (int i = 0; i < dlTemplate.Items.Count; i++)
 65         {
 66             RadioButton rbtnTemplate = (RadioButton)dlTemplate.Items[i].FindControl("rbtnTemplate");
 67             HiddenField hfTemplate300ID = (HiddenField)dlTemplate.Items[i].FindControl("hfTemplate300ID");
 68 
 69             if (Convert.ToInt32(hfTemplate300ID.Value) == CurrentTemID)
 70             {
 71                 rbtnTemplate.Checked = true;
 72             }
 73             else
 74             {
 75                 rbtnTemplate.Checked = false;
 76             }
 77         }
 78     }
 79     
 80     protected void rbtnTemplate_CheckedChanged(object sender, EventArgs e)
 81     {
 82         RadioButton rbtnTemplate = (RadioButton)sender;
 83 
 84         int rowIndex = Convert.ToInt32(rbtnTemplate.GroupName);
 85         Bizproud.BLL.T_019BLL t019bll = new Bizproud.BLL.T_019BLL();
 86 
 87         for (int i = 0; i < dlTemplate.Items.Count; i++)
 88         {
 89             if (rowIndex == i)
 90             {
 91                 rbtnTemplate.Checked = true;
 92 
 93                 t019bll.Update(SupplierId, Convert.ToInt32(((HiddenField)dlTemplate.Items[i].FindControl("hfTemplate300ID")).Value));
 94                 Bizproud.Common.Alert.Show(this"模板保存成功...");
 95             }
 96             else
 97             {
 98                 ((RadioButton)dlTemplate.Items[i].FindControl("rbtnTemplate")).Checked = false;
 99             }
100         }
101     }

 

 

posted @ 2010-08-05 10:56  pyCoders  阅读(304)  评论(0编辑  收藏  举报