1 <form id="form1" runat="server"> 2 <div> 3 <asp:GridView runat="server" ID="gv_KeyList" AutoGenerateColumns="False" 4 Width="99%" onrowdeleting="gv_KeyList_RowDeleting"> 5 <Columns> 6 <asp:BoundField DataField="text" HeaderText="Friends" /> 7 <asp:TemplateField> 8 9 <ItemTemplate> 10 <asp:DropDownList runat="server" ID="DropDownList1" DataSource='<%#DDLBind() %>' DataTextField="text" DataValueField="id"> </asp:DropDownList> 11 </ItemTemplate> 12 </asp:TemplateField> 13 <asp:CommandField ShowDeleteButton="True" /> 14 </Columns> 15 </asp:GridView> 16 </div> 17 </form>
if (!IsPostBack) { DropDownList dll; string strSql = "select * from emailreceive where p_id!=1 "; string conn = "server=.;database=emailfriends;uid=sa;pwd=123"; SqlConnection conns = new SqlConnection(conn); conns.Open(); SqlCommand cmd = new SqlCommand(strSql, conns); SqlDataAdapter sda = new SqlDataAdapter(); sda.SelectCommand = cmd; DataSet ds = new DataSet(); sda.Fill(ds, "a"); gv_KeyList.DataSource = ds.Tables[0]; gv_KeyList.DataBind(); DataTable dt = DDLBind(); for (int i = 0; i < gv_KeyList.Rows.Count;i++ ) { DataRowView mygv=ds.Tables[0].DefaultView[i]; for(int j=0;j<dt.Rows.Count;j++) { DataRowView pKeyName = dt.DefaultView[j]; if (Convert.ToInt32(mygv["p_id"]) == Convert.ToInt32(pKeyName["id"])) { dll = (DropDownList)gv_KeyList.Rows[i].FindControl("DropDownList1"); string id=mygv["p_id"].ToString(); dll.SelectedValue = id; } } } conns.Close(); } } public DataTable DDLBind() { string strSql1 = "select * from emailreceive where p_id=1 "; string conn1 = "server=.;database=emailfriends;uid=sa;pwd=123"; SqlConnection conns1 = new SqlConnection(conn1); conns1.Open(); SqlCommand cmd1 = new SqlCommand(strSql1, conns1); SqlDataAdapter sda1 = new SqlDataAdapter(); sda1.SelectCommand = cmd1; DataSet ds1 = new DataSet(); sda1.Fill(ds1, "a"); conns1.Close(); return ds1.Tables[0]; } protected void gv_KeyList_RowDeleting(object sender, GridViewDeleteEventArgs e) { string ddlValues = ((DropDownList)gv_KeyList.Rows[e.RowIndex].Cells[1].FindControl("DropDownList1")).SelectedValue; Response.Write(ddlValues); } }
三层的前台代码:
1 <asp:GridView runat="server" ID="gv_KeyList" Width="99%" 2 AutoGenerateColumns="False" onrowdeleting="gv_KeyList_RowDeleting" 3 DataKeyNames="I_KeyId" onrowcancelingedit="gv_KeyList_RowCancelingEdit" 4 onrowediting="gv_KeyList_RowEditing" onrowupdating="gv_KeyList_RowUpdating"> 5 <Columns> 6 <asp:BoundField DataField="Vc_KeyName" HeaderText="关键词" /> 7 <asp:TemplateField HeaderText="父关键词"> 8 9 <ItemTemplate> 10 <asp:DropDownList runat="server" ID="ddlPKey" DataSource='<%#ddlBind() %>' DataTextField="Vc_KeyName" DataValueField="I_KeyId"></asp:DropDownList> 11 </ItemTemplate> 12 </asp:TemplateField> 13 <asp:BoundField DataField="Vc_Url" HeaderText="关键词连接" /> 14 <asp:CommandField HeaderText="修改" ShowEditButton="True" /> 15 <asp:CommandField HeaderText="删除" ShowDeleteButton="True" /> 16 </Columns> 17 </asp:GridView>
三层UI层代码:
1 chinaOfQiHuo.BLL.Guanjiancixinxi bllKey = new chinaOfQiHuo.BLL.Guanjiancixinxi(); 2 3 protected void Page_Load(object sender, EventArgs e) 4 { 5 if (!IsPostBack) 6 { 7 DDL_PKey.DataTextField = "Vc_KeyName"; 8 DDL_PKey.DataValueField = "I_KeyId"; 9 DDL_PKey.DataSource = ddlBind(); 10 DDL_PKey.DataBind(); 11 gv_KeyList.DataSource = gvBind(); 12 gv_KeyList.DataBind(); 13 //绑定ddl 14 DropDownList ddl; 15 for (int i = 0; i < gv_KeyList.Rows.Count; i++) 16 { 17 for (int j = 0; j < ddlBind().Count; j++) 18 { 19 if (gvBind()[i].I_SuperId == ddlBind()[j].I_KeyId) 20 { 21 ddl = (DropDownList)gv_KeyList.Rows[i].FindControl("ddlPKey"); 22 ddl.SelectedValue = gvBind()[i].I_SuperId.ToString(); 23 } 24 } 25 } 26 } 27 } 28 public List<chinaOfQiHuo.Model.Guanjiancixinxi> ddlBind() 29 { 30 31 return bllKey.GetDDLPKey(); 32 33 } 34 public List<chinaOfQiHuo.Model.Guanjiancixinxi> gvBind() 35 { 36 return bllKey.GetGVList(); 37
三层BLL层代码:
1 chinaOfQiHuo.DAL.Guanjiancixinxi dalKey = new DAL.Guanjiancixinxi(); 2 public bool Add(chinaOfQiHuo.Model.Guanjiancixinxi model,out string Msg) 3 { 4 if (Exists(model.Vc_KeyName))//已存在关键词 5 { 6 Msg = "关键词已存在"; 7 return false; 8 } 9 else 10 { 11 int id = 0; 12 13 id = dalKey.Add(model); 14 if (id > 0) 15 { 16 Msg = "关键词添加成功"; 17 return true; 18 } 19 else { 20 Msg = "添加超时,请重新添加"; 21 return false; 22 } 23 } 24 25 } 26 public bool Exists(string keyName) 27 { 28 return dal.Exists(keyName); 29 } 30 public List<Model.Guanjiancixinxi> GetDDLPKey() 31 { 32 return dalKey.GetDDLPKey(); 33 } 34 public List<Model.Guanjiancixinxi> GetGVList() 35 { 36 37 return dalKey.GetGVKeyList(); 38 } 39 40 }
三层DAL层代码:
1 public bool Exists(string keyName) 2 { 3 StringBuilder strSql = new StringBuilder(); 4 strSql.Append("select count(1) from tb_Guanjiancixinxi"); 5 strSql.Append(" where Vc_KeyName = @keyName"); 6 SqlParameter[] parameters = { 7 new SqlParameter("@keyName", SqlDbType.VarChar,50) 8 }; 9 parameters[0].Value = keyName; 10 11 return DbHelperSQL.Exists(strSql.ToString(), parameters); 12 } 13 //绑定父关键字 14 public List<Model.Guanjiancixinxi> GetDDLPKey() 15 { 16 StringBuilder strSql = new StringBuilder(); 17 strSql.Append("select * from tb_Guanjiancixinxi where I_SuperId=0 "); 18 19 List<Model.Guanjiancixinxi> pKeylist = new List<Model.Guanjiancixinxi>(); 20 SqlDataReader dr= SqlHelper.ExecuteReader(SqlHelper.SqlConnectionString,CommandType.Text,strSql.ToString(),null); 21 while (dr.Read()) 22 { 23 Model.Guanjiancixinxi model = new Model.Guanjiancixinxi(); 24 model.Vc_KeyName = dr["Vc_KeyName"].ToString(); 25 model.I_KeyId = Convert.ToInt32(dr["I_KeyId"]); 26 pKeylist.Add(model); 27 } 28 return pKeylist; 29 } 30 //获取关键字列表 31 public List<Model.Guanjiancixinxi> GetGVKeyList() 32 { 33 string strSql = "select I_KeyId,I_SuperId,Vc_KeyName,Vc_Url FROM tb_Guanjiancixinxi where I_SuperId!=0"; 34 SqlDataReader dr = SqlHelper.ExecuteReader(SqlHelper.SqlConnectionString,CommandType.Text,strSql,null); 35 List<Model.Guanjiancixinxi> gvList = new List<Model.Guanjiancixinxi>(); 36 while (dr.Read()) 37 { 38 Model.Guanjiancixinxi model = new Model.Guanjiancixinxi(); 39 model.Vc_KeyName = dr["Vc_KeyName"].ToString(); 40 model.PKeyName = GetPKeyName(Convert.ToInt32(dr["I_SuperId"])); 41 model.I_SuperId = Convert.ToInt32(dr["I_SuperId"]); 42 model.I_KeyId = Convert.ToInt16(dr["I_KeyId"]); 43 model.Vc_Url = dr["Vc_Url"].ToString(); 44 gvList.Add(model); 45 } 46 return gvList; 47 } 48 private string GetPKeyName(int superId) 49 { 50 string strSql = "select Vc_KeyName from tb_Guanjiancixinxi where I_KeyId =@superId"; 51 SqlParameter[] spt = new SqlParameter[] { new SqlParameter("@superId", SqlDbType.Int) { Value = superId } }; 52 object obj = SqlHelper.ExecuteScalar(SqlHelper.SqlConnectionString, CommandType.Text, strSql,spt); 53 return obj.ToString(); 54 } 55 }
GridView与DropDownList的混合使用