CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

请问谁有从数据库填充DropDownList控件的例子, 这个DropDownList是要在DataList的EditItemTemplate中的,谢谢!

楼主RickFang(蓝色大地)2002-06-15 15:21:35 在 .NET技术 / ASP.NET 提问

请问谁有从数据库填充DropDownList控件的例子,   这个DropDownList是要在DataList的EditItemTemplate中的,谢谢! 问题点数:50、回复次数:5Top

1 楼wurf0(江河湖海)回复于 2002-06-15 18:05:52 得分 40

给你一个例子;要给我分的哦;  
  在quickstart里有个示例程序,里面给出了在datagrid的EditItemTemplate中使用DropDownList的一个办法,但这个办法有个缺点,这个DropDownList的ListItem不是由数据库字段内容动态产生。    
  这里我用了另外一个办法,改正了这个缺陷。程序测试通过,代码如下:    
   
  datagriddrop.aspx    
  ----------------------------------------------------    
   
  <%@   Import   Namespace="System.Data"   %>    
  <%@   Import   Namespace="System.Data.SqlClient"   %>    
   
  <html>    
   
  <head>    
  <script   language="C#"   runat="server">    
   
          SqlConnection   myConnection;    
          public   DataTable   StateIndex;    
  //     public   Hashtable   StateIndex;    
   
          protected   void   Page_Load(Object   Src,   EventArgs   E)    
          {    
                  myConnection   =   new   SqlConnection("server=(local)\\NetSDK;database=pubs;Trusted_Connection=yes");    
   
                  if   (!IsPostBack)    
                          BindGrid();    
   
                  MakeDataTable();    
  /*             StateIndex   =   new   Hashtable();   这是quickstart里使用的办法    
                  StateIndex["CA"]   =   0;    
                  StateIndex["IN"]   =   1;    
                  StateIndex["KS"]   =   2;    
                  StateIndex["MD"]   =   3;    
                  StateIndex["MI"]   =   4;    
                  StateIndex["OR"]   =   5;    
                  StateIndex["TN"]   =   6;    
                  StateIndex["UT"]   =   7;*/    
          }    
   
          void   MakeDataTable()    
          {    
                  String   selectstring="select   distinct   state   from   Authors   order   by   state";    
                  SqlConnection   conn=new   SqlConnection("server=(local)\\NetSDK;database=pubs;Trusted_Connection=yes");    
                  SqlDataAdapter   da=new   SqlDataAdapter(selectstring,conn);    
                  DataSet   ds=new   DataSet();    
                  da.Fill(ds,"state");    
   
                  DataTable   dt=ds.Tables["state"];    
                  int   count=dt.DefaultView.Count;    
   
                  StateIndex=new   DataTable("States");    
                  DataColumn   dc;    
                  DataRow   dr;    
   
                  dc=new   DataColumn();    
                  dc.DataType=Type.GetType("System.String");    
                  dc.ColumnName="Name";    
                  StateIndex.Columns.Add(dc);    
   
                  dc=new   DataColumn();    
                  dc.DataType=Type.GetType("System.Int32");    
                  dc.ColumnName="ID";    
                  StateIndex.Columns.Add(dc);    
   
                  for(int   i=0;i<count;i++)    
                  {    
                          dr=StateIndex.NewRow();    
                          dr["Name"]=dt.Rows[i][0];    
                          dr["ID"]=i;    
                          StateIndex.Rows.Add(dr);    
                  }    
   
                  DataGrid2.DataSource=StateIndex.DefaultView;    
                  DataGrid2.DataBind();    
   
   
          }    
   
          int   GetStateIndex(String   StateName)    
          {    
                  int   index=0;    
   
                  foreach(DataRow   dr   in   StateIndex.Rows)    
                  {    
                          if(dr["Name"].ToString()==StateName)    
                          {    
                                  index=Int32.Parse(dr["ID"].ToString());    
                                  break;    
                          }    
                  }    
   
                  return   index;    
          }    
   
          public   void   MyDataGrid_Edit(Object   sender,   DataGridCommandEventArgs   E)    
          {    
                  MyDataGrid.EditItemIndex   =   (int)E.Item.ItemIndex;    
                  BindGrid();    
          }    
   
          public   void   MyDataGrid_Cancel(Object   sender,   DataGridCommandEventArgs   E)    
          {    
                  MyDataGrid.EditItemIndex   =   -1;    
                  BindGrid();    
          }    
   
          public   void   MyDataGrid_Update(Object   sender,   DataGridCommandEventArgs   E)    
          {    
                  if   (Page.IsValid)    
                  {    
                          String   updateCmd   =   "UPDATE   Authors   SET   au_id   =   @Id,   au_lname   =   @LName,   au_fname   =   @FName,   phone   =   @Phone,   "    
                                  +   "address   =   @Address,   city   =   @City,   state   =   @State,   zip   =   @Zip,   contract   =   @Contract   where   au_id   =   @Id";    
   
                          SqlCommand   myCommand   =   new   SqlCommand(updateCmd,   myConnection);    
   
                          myCommand.Parameters.Add(new   SqlParameter("@Id",   SqlDbType.NVarChar,   11));    
                          myCommand.Parameters.Add(new   SqlParameter("@LName",   SqlDbType.NVarChar,   40));    
                          myCommand.Parameters.Add(new   SqlParameter("@FName",   SqlDbType.NVarChar,   20));    
                          myCommand.Parameters.Add(new   SqlParameter("@Phone",   SqlDbType.NChar,   12));    
                          myCommand.Parameters.Add(new   SqlParameter("@Address",   SqlDbType.NVarChar,   40));    
                          myCommand.Parameters.Add(new   SqlParameter("@City",   SqlDbType.NVarChar,   20));    
                          myCommand.Parameters.Add(new   SqlParameter("@State",   SqlDbType.NChar,   2));    
                          myCommand.Parameters.Add(new   SqlParameter("@Zip",   SqlDbType.NChar,   5));    
                          myCommand.Parameters.Add(new   SqlParameter("@Contract",   SqlDbType.NVarChar,1));    
   
                          myCommand.Parameters["@Id"].Value   =   MyDataGrid.DataKeys[(int)E.Item.ItemIndex];    
   
                          String[]   cols   =   {"LName","FName","Phone","Address","City","Zip"};    
   
                          for   (int   i=0;   i<6;   i++)    
                          {    
                                  String   colvalue   =   ((TextBox)E.Item.FindControl("edit_"   +   cols[i])).Text;    
                                  myCommand.Parameters["@"   +   cols[i]].Value   =   colvalue;    
                          }    
   
                          myCommand.Parameters["@State"].Value   =   ((DropDownList)E.Item.FindControl("edit_State")).SelectedItem.ToString();    
   
                          if   (((CheckBox)E.Item.FindControl("edit_Contract")).Checked   =   true)    
                                  myCommand.Parameters["@Contract"].Value   =   "1";    
                          else    
                                  myCommand.Parameters["@Contract"].Value   =   "0";    
   
                          myCommand.Connection.Open();    
   
                          try    
                          {    
                                  myCommand.ExecuteNonQuery();    
                                  Message.InnerHtml   =   "<b>Record   Updated</b><br>"   +   updateCmd;    
                                  MyDataGrid.EditItemIndex   =   -1;    
                          }    
                          catch   (SqlException   e)    
                          {    
                                  if   (e.Number   ==   2627)    
                                          Message.InnerHtml   =   "ERROR:   A   record   already   exists   with   the   same   primary   key";    
                                  else    
                                          Message.InnerHtml   =   "ERROR:   Could   not   update   record,   please   ensure   the   fields   are   correctly   filled   out";    
                                  Message.Style["color"]   =   "red";    
                          }    
   
                          myCommand.Connection.Close();    
   
                          BindGrid();    
                  }    
                  else    
                  {    
                          Message.InnerHtml   =   "ERROR:   Please   check   each   field   for   error   conditions.";    
                          Message.Style["color"]   =   "red";    
                  }    
          }    
   
          public   void   BindGrid()    
          {    
                  SqlDataAdapter   myCommand   =   new   SqlDataAdapter("select   *   from   Authors",   myConnection);    
   
                  DataSet   ds   =   new   DataSet();    
                  myCommand.Fill(ds,   "Authors");    
   
                  MyDataGrid.DataSource=ds.Tables["Authors"].DefaultView;    
                  MyDataGrid.DataBind();    
          }    
   
  </script>    
  </head>    
  Top

2 楼wurf0(江河湖海)回复于 2002-06-15 18:06:09 得分 0

 
  <body   style="font:   10pt   verdana">    
   
      <form   runat="server">    
   
          <h3><font   face="Verdana">Updating   a   Row   of   Data   w/   Validation</font></h3>    
   
          <span   id="Message"   EnableViewState="false"   style="font:   arial   11pt;"   runat="server"/><p>    
   
          <ASP:DataGrid   id="MyDataGrid"   runat="server"    
              Width="800"    
              BackColor="#ccccff"    
              BorderColor="black"    
              ShowFooter="false"    
              CellPadding=3    
              CellSpacing="0"    
              Font-Name="Verdana"    
              Font-Size="8pt"    
              HeaderStyle-BackColor="#aaaadd"    
              OnEditCommand="MyDataGrid_Edit"    
              OnCancelCommand="MyDataGrid_Cancel"    
              OnUpdateCommand="MyDataGrid_Update"    
              DataKeyField="au_id"    
              AutoGenerateColumns="false"    
          >    
   
              <Columns>    
                  <asp:EditCommandColumn   EditText="Edit"   CancelText="Cancel"   UpdateText="Update"     ItemStyle-Wrap="false"/>    
                  <asp:BoundColumn   HeaderText="au_id"   SortExpression="au_id"   ReadOnly="True"   DataField="au_id"   ItemStyle-Wrap="false"/>    
                  <asp:TemplateColumn   HeaderText="au_lname"   SortExpression="au_lname">    
                      <ItemTemplate>    
                          <asp:Label   runat="server"   Text='<%#   DataBinder.Eval(Container.DataItem,   "au_lname")   %>'/>    
                      </ItemTemplate>    
                      <EditItemTemplate>    
                          <nobr>    
                          <asp:TextBox   runat="server"   id="edit_LName"   Text='<%#   DataBinder.Eval(Container.DataItem,   "au_lname")   %>'/>    
                          <asp:RequiredFieldValidator   id="au_lnameReqVal"    
                                  ControlToValidate="edit_LName"    
                                  Display="Dynamic"    
                                  Font-Name="Verdana"   Font-Size="12"    
                                  runat=server>    
                                            *    
                          </asp:RequiredFieldValidator>    
                      </EditItemTemplate>    
                  </asp:TemplateColumn>    
                  <asp:TemplateColumn   HeaderText="au_fname"   SortExpression="au_fname">    
                      <ItemTemplate>    
                          <asp:Label   runat="server"   Text='<%#   DataBinder.Eval(Container.DataItem,   "au_fname")   %>'/>    
                      </ItemTemplate>    
                      <EditItemTemplate>    
                          <nobr>    
                          <asp:TextBox   runat="server"   id="edit_FName"   Text='<%#   DataBinder.Eval(Container.DataItem,   "au_fname")   %>'/>    
                          <asp:RequiredFieldValidator   id="au_fnameReqVal"    
                                  ControlToValidate="edit_FName"    
                                  Display="Dynamic"    
                                  Font-Name="Verdana"   Font-Size="12"    
                                  runat=server>    
                                            *    
                          </asp:RequiredFieldValidator>    
                      </EditItemTemplate>    
                  </asp:TemplateColumn>    
                  <asp:TemplateColumn   HeaderText="phone"   SortExpression="phone">    
                      <ItemTemplate>    
                          <asp:Label   runat="server"   Text='<%#   DataBinder.Eval(Container.DataItem,   "phone")   %>'/>    
                      </ItemTemplate>    
                      <EditItemTemplate>    
                          <nobr>    
                          <asp:TextBox   runat="server"   id="edit_Phone"   Text='<%#   DataBinder.Eval(Container.DataItem,   "phone")   %>'/>    
                          <asp:RequiredFieldValidator   id="phoneReqVal"    
                                  ControlToValidate="edit_Phone"    
                                  Display="Dynamic"    
                                  Font-Name="Verdana"   Font-Size="12"    
                                  runat=server>    
                                            *    
                          </asp:RequiredFieldValidator>    
                          <asp:RegularExpressionValidator   id="phoneRegexVal"    
                                  ControlToValidate="edit_Phone"    
                                  ValidationExpression="[0-9]{3}   [0-9]{3}-[0-9]{4}"    
                                  Display="Dynamic"    
                                  Font-Name="Arial"   Font-Size="11"    
                                  runat=server>    
                                          *   Phone   must   be   in   form:   XXX   XXX-XXXX   <br>    
                          </asp:RegularExpressionValidator>    
                      </EditItemTemplate>    
                  </asp:TemplateColumn>    
                  <asp:TemplateColumn   HeaderText="address"   SortExpression="address">    
                      <ItemTemplate>    
                          <asp:Label   runat="server"   Text='<%#   DataBinder.Eval(Container.DataItem,   "address")   %>'/>    
                      </ItemTemplate>    
                      <EditItemTemplate>    
                          <asp:TextBox   runat="server"   id="edit_Address"   Text='<%#   DataBinder.Eval(Container.DataItem,   "address")   %>'/>    
                      </EditItemTemplate>    
                  </asp:TemplateColumn>    
                  <asp:TemplateColumn   HeaderText="city"   SortExpression="city">    
                      <ItemTemplate>    
                          <asp:Label   runat="server"   Text='<%#   DataBinder.Eval(Container.DataItem,   "city")   %>'/>    
                      </ItemTemplate>    
                      <EditItemTemplate>    
                          <asp:TextBox   runat="server"   id="edit_City"   Text='<%#   DataBinder.Eval(Container.DataItem,   "city")   %>'/>    
                      </EditItemTemplate>    
                  </asp:TemplateColumn>    
                  <asp:TemplateColumn   HeaderText="state"   SortExpression="state">    
                      <ItemTemplate>    
                          <asp:Label   runat="server"   Text='<%#   DataBinder.Eval(Container.DataItem,   "state")   %>'/>    
                      </ItemTemplate>    
                      <EditItemTemplate>    
                          <asp:DropDownList   runat="server"   DataSource='<%#   StateIndex.DefaultView   %>'   DataTextField="Name"   SelectedIndex='<%#   GetStateIndex((String)((DataRowView)Container.DataItem)["state"])   %>'   id="edit_State"/>    
                      </EditItemTemplate>    
                  </asp:TemplateColumn>    
                  <asp:TemplateColumn   HeaderText="zip"   SortExpression="zip">    
                      <ItemTemplate>    
                          <asp:Label   runat="server"   Text='<%#   DataBinder.Eval(Container.DataItem,   "zip")   %>'/>    
                      </ItemTemplate>    
                      <EditItemTemplate>    
                          <asp:TextBox   runat="server"   id="edit_Zip"   Text='<%#   DataBinder.Eval(Container.DataItem,   "zip")   %>'/>    
                          <asp:RegularExpressionValidator   id="RegularExpressionValidator1"    
                                  ASPClass="RegularExpressionValidator"   ControlToValidate="edit_Zip"    
                                  ValidationExpression="[0-9]{5}"    
                                  Display="Dynamic"    
                                  Font-Name="Arial"   Font-Size="11"    
                                  runat=server>    
                                          *   Zip   Code   must   be   5   numeric   digits   <br>    
                          </asp:RegularExpressionValidator>    
                      </EditItemTemplate>    
                  </asp:TemplateColumn>    
                  <asp:TemplateColumn   HeaderText="contract"   SortExpression="contract">    
                      <ItemTemplate>    
                          <asp:Label   runat="server"   Text='<%#   DataBinder.Eval(Container.DataItem,   "contract",   "{0}")   %>'/>    
                      </ItemTemplate>    
                      <EditItemTemplate>    
                          <asp:CheckBox   runat="server"   id="edit_Contract"   Checked='<%#   DataBinder.Eval(Container.DataItem,   "contract")   %>'/>    
                      </EditItemTemplate>    
                  </asp:TemplateColumn>    
              </Columns>    
   
          </ASP:DataGrid>    
  <hr>    
  <ASP:DataGrid   id="DataGrid2"   runat="server"    
          Width="360"    
          BackColor="#ccccff"      
          BorderColor="black"    
          ShowFooter="false"      
          CellPadding=3      
          CellSpacing="0"    
          Font-Name="Verdana"    
          Font-Size="8pt"    
          HeaderStyle-BackColor="#aaaadd"    
          EnableViewState="false"    
      />    
   
   
      </form>    
   
  </body>    
  </html>    
  Top

3 楼yellowwee(端木柒)回复于 2002-06-15 18:23:49 得分 10

我写的程序   DataList的EditItemTemplate中包含有id为LevelList的DropDownList  
   
  void   DoItemEdit(Object   objSource,   DataListCommandEventArgs   objArgs)  
  {  
   
  ManDataList.SelectedIndex   =   -1;  
   
  ManDataList.EditItemIndex   =   objArgs.Item.ItemIndex;  
  BindDataGrid(); //   bind   the   data   and   display   it  
   
  //得到获奖单位和获奖级别  
  String   pId   =   Request.Params["pId"];  
  ProductDataMan   myGetData   =   new   ProductDataMan();   //使用组件得到数据库中的数据  
   
  Get7thDeData   LevelGetData   =   new   Get7thDeData();  
  DataSet   LevelDS   =   LevelGetData.GetDataMan("Level");  
   
  DropDownList   LevelList   =   (DropDownList)ManDataList.Items[objArgs.Item.ItemIndex].FindControl("LevelList");  
  LevelList.DataSource   =   LevelDS.Tables["Level"].DefaultView;  
   
  LevelList.DataTextField   =   "lName";  
  LevelList.DataValueField   =   "lId";  
  LevelList.DataBind();  
  }  
  Top

4 楼RickFang(蓝色大地)回复于 2002-06-16 23:24:05 得分 0

如果是自定义控件<my:main   id="my01"   runat="server"/>的话这一句DropDownList   LevelList   =   (DropDownList)ManDataList.Items[objArgs.Item.ItemIndex].FindControl("LevelList")应如何改呢?  
  Top

5 楼wshyhai(小浪子)回复于 2002-06-30 21:30:29 得分 0

upTop

相关问题

  • 在datalist的EDITITEMTEMPLATE中使用Dropdownlist(使用的是代码分离)
  • DataList的EditItemTemplate中DropDownList的SelectedIndexChanged事件不响应问题
  • 请问如何实现在DataList的<EditItemTemplate>模版内的DropDownList的数据绑定?
  • 在对DropDownList填充时,如何设置它的选定项?
  • 请教:填充DropDownlist后为什么改变了原列表项?
  • 简单的问题:如何用循环填充DropDownList
  • Datalist中EDITITEMTemplate的dropdwnlist 问题
  • 已经在datagrid的模板列中定义了dropdownlist,如何通过程序填充其项?急!急!急!
  • DropDownList的选项在客户端使用JS填充后,服务端无法取得数据?
  • 如何在datalist中使用dropdownlist?

关键词

  • dropdownlist
  • xxx

得分解答快速导航

  • 帖主:RickFang
  • wurf0
  • yellowwee

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo