C# 在ASP.Net中的GridView EditItemTemplate中设置DropDownList选定值
我需要使用c#在asp.net的gridview edititemtemplate中填充从数据库获取的dropdownlist选定值 我不能这样做,因为在下拉列表中编辑gridview edititemtemplate时,默认值被选中,而不是数据库中注册的值C# 在ASP.Net中的GridView EditItemTemplate中设置DropDownList选定值,c#,asp.net,gridview,edititemtemplate,C#,Asp.net,Gridview,Edititemtemplate,我需要使用c#在asp.net的gridview edititemtemplate中填充从数据库获取的dropdownlist选定值 我不能这样做,因为在下拉列表中编辑gridview edititemtemplate时,默认值被选中,而不是数据库中注册的值 在为下拉列表选择项目列表的页面上创建一个数据源。然后将数据源绑定到ddl。大概是这样的: <EditItemTemplate> <asp:DropDownList ID="ddlEditCompany" runa
在为下拉列表选择项目列表的页面上创建一个数据源。然后将数据源绑定到ddl。大概是这样的:
<EditItemTemplate>
<asp:DropDownList ID="ddlEditCompany" runat="server"
DataSourceID="odsCompany" // <-- data source.
DataTextField="CompanyName"
DataValueField="CompanyID"
SelectedValue='<%# Bind("CompanyID") %>'> // <-- select here.
</asp:DropDownList>
</EditItemTemplate>
//我不能发表评论,所以我将作为答案发布
“…选择默认值,而不是数据库中注册的值”,因为您在编辑模板中将下拉列表设置为“默认值”:
您不应该从数据库中设置值dateofBirth
就今年而言,我认为最好
ddlYear.DataSource = Enumerable.Range(DateTime.Now.Year - 0, 12).Reverse().Select(x => x.ToString()).Append("0001")
如果我理解你的问题:
protected void GridView2_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView g2 = (GridView)sender;
g2.EditIndex = e.NewEditIndex;
GridViewRow gvCustomerRow = g2.NamingContainer as GridViewRow;
int customerId = (int)gvProducts.DataKeys[gvCustomerRow.RowIndex].Value;
DataTable dts = new DataTable();
DateTime dateofBirth = new DateTime();
sql = @String.Format(" SELECT * FROM `doTable` ");
sql += String.Format(" WHERE sID IN ('{0}') ", customerId);
using (OdbcConnection cn =
new OdbcConnection(ConfigurationManager.ConnectionStrings["Conn"].ConnectionString))
{
using (OdbcCommand cmd =
new OdbcCommand(sql, cn))
{
cmd.CommandType = CommandType.Text;
cmd.Connection.Open();
using (OdbcDataAdapter adapt =
new OdbcDataAdapter(cmd))
{
adapt.Fill(dts);
if (dts.Rows.Count > 0)
{
g2.DataSource = dts;
g2.DataBind();
DataRow row = dts.Rows[0];
if (String.IsNullOrEmpty(row["DateValuefromDB"].ToString()))
{
ddlMonth.DataSource = Enumerable.Range(1, 12).Select(a => new
{
MonthName = DateTimeFormatInfo.CurrentInfo.GetMonthName(a),
MonthNumber = a
});
ddlMonth.DataBind();
DropDownList ddlYear = (DropDownList)(g2.Rows[g2.EditIndex].FindControl("ddlYear"));
ddlYear.DataSource = Enumerable.Range(DateTime.Now.Year - 0, 12).Reverse();
ddlYear.DataBind();
ddlYear.Items.Insert(0, new ListItem("0001", "0001"));
ddlday.DataSource = Enumerable.Range(1, DateTime.DaysInMonth(DateTime.Now.Year, Convert.ToInt32(ddlMonth.SelectedValue)));
ddlday.DataBind();
ddlday.SelectedValue = dateofBirth.Day.ToString();
ddlMonth.SelectedValue = dateofBirth.Month.ToString();
ddlYear.SelectedValue = dateofBirth.Year.ToString();
}
else
{
ddlMonth.DataSource = Enumerable.Range(1, 12).Select(a => new
{
MonthName = DateTimeFormatInfo.CurrentInfo.GetMonthName(a),
MonthNumber = a
});
ddlMonth.DataBind();
DropDownList ddlYear = (DropDownList)(g2.Rows[g2.EditIndex].FindControl("ddlYear"));
ddlYear.DataSource = Enumerable.Range(DateTime.Now.Year - 0, 12).Reverse();
ddlYear.DataBind();
ddlYear.Items.Insert(0, new ListItem("0001", "0001"));
ddlday.DataSource = Enumerable.Range(1, DateTime.DaysInMonth(DateTime.Now.Year, Convert.ToInt32(ddlMonth.SelectedValue)));
ddlday.DataBind();
ddlday.SelectedValue = Convert.ToDateTime(row["DateValuefromDB"]).Day.ToString();
ddlMonth.SelectedValue = Convert.ToDateTime(row["DateValuefromDB"]).Month.ToString();
ddlYear.SelectedValue = Convert.ToDateTime(row["DateValuefromDB"]).Year.ToString();
}
}
}
}
}
}
您应该能够在aspx页面中执行此操作。你能出示你的页面吗?
ddlYear.DataSource = Enumerable.Range(DateTime.Now.Year - 0, 12).Reverse().Select(x => x.ToString()).Append("0001")
protected void GridView2_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView g2 = (GridView)sender;
g2.EditIndex = e.NewEditIndex;
GridViewRow gvCustomerRow = g2.NamingContainer as GridViewRow;
int customerId = (int)gvProducts.DataKeys[gvCustomerRow.RowIndex].Value;
DataTable dts = new DataTable();
DateTime dateofBirth = new DateTime();
sql = @String.Format(" SELECT * FROM `doTable` ");
sql += String.Format(" WHERE sID IN ('{0}') ", customerId);
using (OdbcConnection cn =
new OdbcConnection(ConfigurationManager.ConnectionStrings["Conn"].ConnectionString))
{
using (OdbcCommand cmd =
new OdbcCommand(sql, cn))
{
cmd.CommandType = CommandType.Text;
cmd.Connection.Open();
using (OdbcDataAdapter adapt =
new OdbcDataAdapter(cmd))
{
adapt.Fill(dts);
if (dts.Rows.Count > 0)
{
g2.DataSource = dts;
g2.DataBind();
DataRow row = dts.Rows[0];
if (String.IsNullOrEmpty(row["DateValuefromDB"].ToString()))
{
ddlMonth.DataSource = Enumerable.Range(1, 12).Select(a => new
{
MonthName = DateTimeFormatInfo.CurrentInfo.GetMonthName(a),
MonthNumber = a
});
ddlMonth.DataBind();
DropDownList ddlYear = (DropDownList)(g2.Rows[g2.EditIndex].FindControl("ddlYear"));
ddlYear.DataSource = Enumerable.Range(DateTime.Now.Year - 0, 12).Reverse();
ddlYear.DataBind();
ddlYear.Items.Insert(0, new ListItem("0001", "0001"));
ddlday.DataSource = Enumerable.Range(1, DateTime.DaysInMonth(DateTime.Now.Year, Convert.ToInt32(ddlMonth.SelectedValue)));
ddlday.DataBind();
ddlday.SelectedValue = dateofBirth.Day.ToString();
ddlMonth.SelectedValue = dateofBirth.Month.ToString();
ddlYear.SelectedValue = dateofBirth.Year.ToString();
}
else
{
ddlMonth.DataSource = Enumerable.Range(1, 12).Select(a => new
{
MonthName = DateTimeFormatInfo.CurrentInfo.GetMonthName(a),
MonthNumber = a
});
ddlMonth.DataBind();
DropDownList ddlYear = (DropDownList)(g2.Rows[g2.EditIndex].FindControl("ddlYear"));
ddlYear.DataSource = Enumerable.Range(DateTime.Now.Year - 0, 12).Reverse();
ddlYear.DataBind();
ddlYear.Items.Insert(0, new ListItem("0001", "0001"));
ddlday.DataSource = Enumerable.Range(1, DateTime.DaysInMonth(DateTime.Now.Year, Convert.ToInt32(ddlMonth.SelectedValue)));
ddlday.DataBind();
ddlday.SelectedValue = Convert.ToDateTime(row["DateValuefromDB"]).Day.ToString();
ddlMonth.SelectedValue = Convert.ToDateTime(row["DateValuefromDB"]).Month.ToString();
ddlYear.SelectedValue = Convert.ToDateTime(row["DateValuefromDB"]).Year.ToString();
}
}
}
}
}
}