求救:如何绑定dropdownlist到数据库?
四个表:expweek(week),expday(day),experchoose(userid,experid,week,day),experdemand(experid,expertitle,expercontent);
其中我要将dropdownlist1绑定到expweek表中的week字段,dropdownlist2绑定到expdayk表中的day字段
我是要让学生选择第几周(expweek(week))星期几(expday(day))做什么实验(experchoose(experid))。显示时用datagrid绑定到experdemand列出所有的实验让学生选择?
datagrid.source=objDs.Tables["ExperDemand"].DefaultView;那dropdownlist1、dropdownlist2该怎么绑定?
还有其他问题我都不知如何下手,还望指点
问题点数:20、回复次数:7Top
1 楼artak(甜葡萄)回复于 2006-03-20 12:58:49 得分 5
SqlConnection cn = new SqlConnection("server=.;database=DB;uid=sa;pwd=sa");
SqlDataAdapter da = new SqlDataAdapter("select * from expweek",cn);
DataSet ds = new DataSet();
da.Fill(ds);
dropdownlist1.DataSource = ds;
dropdownlist1.DataTextField = week;//这里是显示的
dropdownlist1.DataValueField = value;//value是主健
dropdownlist1.DataBind();Top
2 楼wilens(巫巫)回复于 2006-03-20 14:31:13 得分 0
可能我没说清楚。
我的意思是让学生选择第几周(expweek(week))星期几(expday(day))做什么实验(experchoose(experid))并将记录保存在experchoose(userid,experid,week,day)。也就是学生刚选择时dropdownlist1(绑定week)、dropdownlist2(绑定day)、experid都在同一个datagrid,也就是一个datagrid的数据源由三个独立的数据表组成。
是不是可以用findcontrol实现,具体代码怎样实现?
非常感谢楼上的热心指点,小弟不才,还望多多指点。Top
3 楼robert2004(我能发财)回复于 2006-03-20 16:27:01 得分 2
绝对复杂
---------------------------
苦海无边 回头无岸
---------------------------
Top
4 楼New919(LonePraogrammer)回复于 2006-03-20 16:30:03 得分 13
public int BindDropDownItem(string pDataBase , string pStrTextField , string pStrValueField , string pStrTableName , DropDownList pList)
{
try
{
string _StrSQL = "select " + pStrTextField + " , " + pStrValueField + " from " + pStrTableName;
BEMBasic.CreateConnectionString(pDataBase);
BEM.BEM_MyDB db = new BEM_MyDB();
DataTable _DT = db.GetDataTable(_StrSQL);
pList.DataSource = _DT;
pList.DataTextField = pStrTextField;
pList.DataValueField = pStrTextField;
pList.DataBind();
return 0;
}
catch (Exception ex)
{
return -1;
}
}Top
5 楼wilens(巫巫)回复于 2006-03-20 17:11:59 得分 0
error:未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
行 108: objDaDayTemp.Fill(objDsTime,"ExperDay");
行 109: DropDownList ddlWeekTemp = (DropDownList)e.Item.FindControl("ddlExperWeek");
行 110: ddlWeekTemp.DataSource=objDsTime.Tables["ExperWeek"];
html:
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
行 108: objDaDayTemp.Fill(objDsTime,"ExperDay");
行 109: DropDownList ddlWeekTemp = (DropDownList)e.Item.FindControl("ddlExperWeek");
行 110: ddlWeekTemp.DataSource=objDsTime.Tables["ExperWeek"];
cs:
private void dgExper_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
string strSelWeek = "Select * from ExperWeek";
string strSelDay = "Select * from ExperDay";
SqlConnection objConnection = new SqlConnection(strConnection);
objConnection.Open();
SqlDataAdapter objDaWeekTemp = new SqlDataAdapter(strSelWeek,objConnection);
SqlDataAdapter objDaDayTemp = new SqlDataAdapter(strSelDay,objConnection);
DataSet objDsTime = new DataSet();
objDaWeekTemp.Fill(objDsTime,"ExperWeek");
objDaDayTemp.Fill(objDsTime,"ExperDay");
DropDownList ddlWeekTemp = (DropDownList)e.Item.FindControl("ddlExperWeek");
ddlWeekTemp.DataSource=objDsTime.Tables["ExperWeek"];
ddlWeekTemp.DataValueField="ExpWeek";
ddlWeekTemp.DataBind();
ddlWeekTemp.Items.Insert(0,new ListItem("请选择",""));
DropDownList ddlDayTemp = (DropDownList)e.Item.FindControl("ddlExperDay");
ddlDayTemp.DataSource=objDsTime.Tables["ExperDay"];
ddlDayTemp.DataValueField="ExpDay";
ddlDayTemp.DataBind();
ddlDayTemp.Items.Insert(0,new ListItem("请选择",""));
objConnection.Close();
}
找了很久,没找出疑点,还请赐教
Top
6 楼wilens(巫巫)回复于 2006-03-20 17:13:18 得分 0
html:
<asp:datagrid id="dgExper" runat="server" CssClass="border" CellPadding="5" BorderWidth="0px"
CellSpacing="1" AutoGenerateColumns="False">
<ItemStyle CssClass="item"></ItemStyle>
<HeaderStyle CssClass="header"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderText="选中">
<ItemTemplate>
<asp:CheckBox ID="chbExper" runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="第几周">
<ItemTemplate>
<asp:DropDownList ID="ddlExperWeek" Runat="server"></asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="星期几">
<ItemTemplate>
<asp:DropDownList ID="ddlExperDay" Runat="server"></asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="实验标题">
<ItemTemplate>
<asp:HyperLink Text='<%# DataBinder.Eval(Container.DataItem,"ExpDemTitle").ToString() %>' Target=_blank NavigateUrl='<%# "..\\expdemview.aspx?id="+DataBinder.Eval(Container.DataItem,"ExpDemID").ToString() %>' runat="server" ID="hplExper" />
<asp:Label ID="lblExpDemID" Text='<%# DataBinder.Eval(Container.DataItem,"ExpDemID").ToString() %>' runat="server" Visible="false" />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>Top
7 楼wilens(巫巫)回复于 2006-03-20 20:32:31 得分 0
怎样让datagrid在private void Page_Load(object sender, System.EventArgs e) {...}就处于编辑状态, 我知道“error:未将对象引用设置到对象的实例”错误的原因了,
<ItemTemplate>
<asp:DropDownList ID="ddlExperDay" Runat="server"></asp:DropDownList>
</ItemTemplate>
是不是dropdownlist不能放在ItemTemplate,只能放在EditItemTemplate?
小弟见识肤浅,还望各位多多指点。。。Top




