【发布时间】:2014-01-27 20:54:29
【问题描述】:
我正在尝试使用来自SQL 的数据并使用数据表填充asp:DropDownList。但是,我收到错误 'CreatedByDropList' has a SelectedValue 无效,因为它不存在于项目列表中。参数名称:值
asp:DropDownList 位于表单视图中,其选择由网格视图填充。
这是 Formview 的 Edit and Insert 模板中 DropList 控件的 HTML:
<asp:DropDownList ID="CreatedByDropList" AppendDataBoundItems="true" SelectedValue='<%# Bind("CreatedBy") %>' runat="server" />
下面是代码:
protected void FormView1_DataBound(object sender, EventArgs e)
{
if (FormView1.CurrentMode == FormViewMode.Insert)
{
DropDownList ddlCreatedBy = FormView1.FindControl("CreatedByDropList") as DropDownList; //Placed BreakPoint Here
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["MySqlServer"].ConnectionString))
{
SqlCommand cmd = new SqlCommand(@"SELECT RLS.RoleName [RoleName], URS.UserID [UserID], USRS.UserName[UserName], USRS.FirstName[FirstName], USRS.LastName[LastName]
FROM [Roles] RLS Inner JOIN [Users] USRS LEFT JOIN [UserRoles] URS
ON USRS.[UserID] = URS.[UserID] ON RLS.[RoleID] = URS.[RoleID]
WHERE RLS.[RoleName] = 'Blog Editors'",conn);
conn.Open();
using (SqlDataReader reader1 = cmd.ExecuteReader())
{
while (reader1.Read())
{
int numUserID = reader1.GetInt32(1);
string strFirstName = reader1.GetString(3);
string strLastName = reader1.GetString(4);
string newUserName = strFirstName + " " + strLastName;
}
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
ddlCreatedBy.DataSource = dt;
ddlCreatedBy.DataTextField = "newUserName";//Placed BreakPoint Here
ddlCreatedBy.DataValueField = "numUserID";//Placed BreakPoint Here
ddlCreatedBy.DataBind();
}
}
}
我在整个过程中放置了断点以进行一些故障排除,但调试窗口始终保持空白(意味着所有调试窗口都是空白且无用)。
【问题讨论】:
标签: c# asp.net sql-server webforms formview