我在GridView1中有TextBox也有DropDownList,TextBox赋值没有问题,但是DropDownList赋值却出现问题?是我的写法错了吗?<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CssClass="GVTab"
onrowdatabound="GridView1_RowDataBound" onrowdeleting="GridView1_RowDeleting" DataKeyNames="id" >
<Columns>
<asp:BoundField DataField="id" HeaderText="ID" Visible="false" />
<asp:CommandField ShowDeleteButton="True" />
<asp:TemplateField HeaderText="物料编号">
<ItemTemplate>
<asp:TextBox ID="pno" runat="server" Enabled="false"
Text='<%# Eval("pno") %>' Width="100px" />
</asp:textbox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="仓位">
<ItemTemplate>
<asp:DropDownList ID="loc" runat="server" Enabled="true"
SelectValue='<%# Eval("loc") %>' Width="80px" /> //<-----请问这个地方如何写
</asp:dropdownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="备注">
<ItemTemplate>
<asp:TextBox ID="re" runat="server" Enabled="true"
Text='<%# Eval("re") %>' Width="180px" />
</asp:textbox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
onrowdatabound="GridView1_RowDataBound" onrowdeleting="GridView1_RowDeleting" DataKeyNames="id" >
<Columns>
<asp:BoundField DataField="id" HeaderText="ID" Visible="false" />
<asp:CommandField ShowDeleteButton="True" />
<asp:TemplateField HeaderText="物料编号">
<ItemTemplate>
<asp:TextBox ID="pno" runat="server" Enabled="false"
Text='<%# Eval("pno") %>' Width="100px" />
</asp:textbox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="仓位">
<ItemTemplate>
<asp:DropDownList ID="loc" runat="server" Enabled="true"
SelectValue='<%# Eval("loc") %>' Width="80px" /> //<-----请问这个地方如何写
</asp:dropdownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="备注">
<ItemTemplate>
<asp:TextBox ID="re" runat="server" Enabled="true"
Text='<%# Eval("re") %>' Width="180px" />
</asp:textbox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
{
return 查询数据库返回能够保存某个或者某种物料的所有仓位(物料);
}当然,如果仓位集合是多个属性的,例如返回的是"List<仓位>"类型或者DataTable类型的,你还可以在声明中指出显示所用的属性名、值所用的属性名。当实际使用时,其实应该在“查询数据库返回......”之前增加一句,先从数据缓存里取数据。当然也可以仅仅缓存在本页对象的private变量里(要根据所使用的查询条件——仓位——而分开保存),这样本页上这个GridView种不同行的DropdownList的数据绑定就不一定需要重复去读取数据库了。最后,这个方法其实就是BLL方法。这里演示的是用很干净的方法将界面声明和BLL方法分开,代码维护起来肯定比那种跑到什么GridView的DataBound事件处理方法中又访问BLL有查找和设置控件要清晰方便了。
dropdown drop=row.findControl("") as DropDownlist;
drop.datasource="";
drop.dadtabind();
}
<asp:DropDownList ID="ddlSort" runat="server" Width="98%">
</asp:DropDownList>
<asp:HiddenField ID="Hd_Sort" runat="server" Value=' <%# Eval("BalSort")%>' />
</ItemTemplate>
protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowIndex != -1)
{ if (e.Row.RowState == DataControlRowState.Edit || e.Row.RowState == (DataControlRowState.Alternate | DataControlRowState.Edit))
{
((DropDownList)e.Row.FindControl("ddlSort")).SelectedValue = ((HiddenField)e.Row.FindControl("Hd_Sort")).Value;
}
}
}protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
{
gv.EditIndex = e.NewEditIndex;
string strSort = ((DropDownList)gv.Rows[e.NewEditIndex].FindControl("ddlSort")).SelectedValue.Trim();
gv.EditIndex = -1;
BindData();
}
我不太推荐赋值,说不上为什么,
建议给selectIndex赋值
我一般都这样用
void dllBind()
{
string sSql;
sqlcon = new SqlConnection(sConnStr);
sqlcon.Open();
SqlDataReader dr;
SqlCommand sc;
// 学生类别
sSql = "SELECT [XSLB_DM], [XSLB_MC] FROM [XSLB]";
sc= new SqlCommand(sSql, sqlcon);
dr = sc.ExecuteReader();
if (dr != null)
{
while (dr.Read())
{
string txt = dr["XSLB_MC"].ToString().Trim();
string val = dr["XSLB_DM"].ToString().Trim();
ddlXSLB.Items.Add(new ListItem(txt, val));
}
}
sqlcon.Close();
//政治面貌
sSql = "SELECT [ZZMM_DM], [ZZMM_MC] FROM [ZZMM]";
sqlcon.Open();
sc = new SqlCommand(sSql, sqlcon);
dr = sc.ExecuteReader();
if (dr != null)
{
while (dr.Read())
{
string txt = dr["ZZMM_MC"].ToString().Trim();
string val = dr["ZZMM_DM"].ToString().Trim();
ddlZZMM.Items.Add(new ListItem(txt, val));
}
}
sqlcon.Close();
//学生系所
sSql = "SELECT [XSXS_DM], [XSXS_MC] FROM [XSXS]";
sqlcon.Open();
sc = new SqlCommand(sSql, sqlcon);
dr = sc.ExecuteReader();
if (dr != null)
{
while (dr.Read())
{
string txt = dr["XSXS_MC"].ToString().Trim();
string val = dr["XSXS_DM"].ToString().Trim();
ddlXSXS.Items.Add(new ListItem(txt, val));
}
}
sqlcon.Close();
//专业
sSql = "SELECT [XSZY_DM], [XSZY_MC] FROM [XSZY]";
sqlcon.Open();
sc = new SqlCommand(sSql, sqlcon);
dr = sc.ExecuteReader();
if (dr != null)
{
while (dr.Read())
{
string txt = dr["XSZY_MC"].ToString().Trim();
string val = dr["XSZY_DM"].ToString().Trim();
ddlXSZY.Items.Add(new ListItem(txt, val));
}
}
sqlcon.Close();
//年级
sSql = "SELECT [XSJB_DM], [XSJB_MC] FROM [XSJB]";
sqlcon.Open();
sc = new SqlCommand(sSql, sqlcon);
dr = sc.ExecuteReader();
if (dr != null)
{
while (dr.Read())
{
string txt = dr["XSJB_MC"].ToString().Trim();
string val = dr["XSJB_DM"].ToString().Trim();
ddlXSNJ.Items.Add(new ListItem(txt, val));
}
}
sqlcon.Close();
}
{
string sSql = "SELECT [XSXX_XH], [XSXX_MM], [XSXX_XM], [XSXX_SFZH], [XSXX_XB], [XSXX_XSLB], [XSXX_JG], "+
"[XSXX_CSRQ], [XSXX_ZZMM], [XSXX_XS], [XSXX_RXRQ], [XSXX_ZY], [XSXX_NJ], [XSXX_BJ], [XSXX_SM] FROM [XSXX] " +
"WHERE ([XSXX_XH] = '"+XSXH+"') " ;
string sTmp;
sqlcon = new SqlConnection(sConnStr);
sqlcon.Open();
SqlDataReader dr;
SqlCommand sc = new SqlCommand(sSql, sqlcon);
dr = sc.ExecuteReader();
if (dr != null)
{
if (dr.Read())
{
lblXH.Text = XSXH;
tbxMM.Text = dr["XSXX_MM"].ToString().Trim();
tbxXM.Text = dr["XSXX_XM"].ToString().Trim();
tbxSFZH.Text = dr["XSXX_SFZH"].ToString().Trim();
//sTmp = "";
sTmp = dr["XSXX_XB"].ToString().Trim();
ddlXB.SelectedIndex = ddlXB.Items.IndexOf(ddlXB.Items.FindByValue(sTmp));
//sTmp = "";
sTmp = dr["XSXX_XSLB"].ToString().Trim();
ddlXSLB.SelectedIndex = ddlXSLB.Items.IndexOf(ddlXSLB.Items.FindByValue(sTmp));
tbxJG.Text = dr["XSXX_JG"].ToString().Trim();
tbxCSRQ.Text =Convert.ToDateTime(dr["XSXX_CSRQ"].ToString().Trim()).ToShortDateString();
//sTmp = "";
sTmp = dr["XSXX_ZZMM"].ToString().Trim();
ddlZZMM.SelectedIndex = ddlZZMM.Items.IndexOf(ddlZZMM.Items.FindByValue(sTmp));
//sTmp = "";
sTmp = dr["XSXX_XS"].ToString().Trim();
ddlXSXS.SelectedIndex = ddlXSXS.Items.IndexOf(ddlXSXS.Items.FindByValue(sTmp));
tbxRXRQ.Text = Convert.ToDateTime(dr["XSXX_RXRQ"].ToString().Trim()).ToShortDateString();
//sTmp = "";
sTmp = dr["XSXX_ZY"].ToString().Trim();
ddlXSZY.SelectedIndex = ddlXSZY.Items.IndexOf(ddlXSZY.Items.FindByValue(sTmp));
//sTmp = "";
sTmp = dr["XSXX_NJ"].ToString().Trim();
ddlXSNJ.SelectedIndex = ddlXSNJ.Items.IndexOf(ddlXSNJ.Items.FindByValue(sTmp));
tbxBJ.Text = dr["XSXX_BJ"].ToString().Trim();
if (dr["XSXX_SM"] != DBNull.Value)
{
tbxSM.Text = dr["XSXX_SM"].ToString().Trim();
}
else
{
tbxSM.Text = "无";
}
}
}
sqlcon.Close(); }