请问谁有从数据库填充DropDownList控件的例子, 这个DropDownList是要在DataList的EditItemTemplate中的,谢谢!
请问谁有从数据库填充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?




