strSQL = "SELECT * FROM User_Reg WHERE User_ID='" + UserId + "'";
DataTable dataTablerepeaterUserList = null;
dataTablerepeaterUserList =objSqlDbComm.ExecuteDatasetQuery(strSQL).Tables[0];
foreach (DataRow dr in dataTablerepeaterUserList.Rows)
{
ddlTitle.SelectedItem.Text = dr["Title"].ToString();
}
<asp:DropDownList ID="ddlTitle" runat="server" CssClass="csstextbox" >
<asp:ListItem>Mr.</asp:ListItem>
<asp:ListItem>Mrs.</asp:ListItem>
<asp:ListItem>Miss.</asp:ListItem>
<asp:ListItem>Dr.</asp:ListItem>
</asp:DropDownList>
如果,假设,dr [“Title”] = Dr。然后用Dr.覆盖先生并得到如下结果:
| Dr. |
| Mrs. |
| Miss.|
| Dr. |
我正在使用querystring将User_ID从View_User.aspx
传递到Create_User.aspx
以供编辑用户使用。 ID正确,显示Create_User.aspx
中的所有正确字段。所有控件都能正确获取正确数据但是当我填充当前用户的标题时,它会覆盖第一项DropDownList
。 (我只有DropDownList
被覆盖的问题。
答案 0 :(得分:0)
这正是你的代码所做的:
默认情况下,下拉列表的第一个元素是选定的元素,并且您将覆盖它。
答案 1 :(得分:0)
当您通过userid获取特定用户的数据时,您将获得单个记录。所以需要为dataTablerepeaterUserList使用for循环。 只检查行是否存在然后使用它。 像
if (dataTablerepeaterUserList.rows.count > 0)
{
ForEach(ListItem itm In ddlTitle.Items)
{
If (itm.Text = dataTablerepeaterUserList.Rows[0].tostring())
{
itm.Selected = True;
}
}
}
答案 2 :(得分:0)
您的代码存在的问题是,您只是覆盖.text
中第一个ListItem
的{{1}}属性。
您要做的是找到您想要的现有DropDownList
,并修改ListItem
的{{1}}属性,以便选择正确的项目。这应该适合你:
SelectedIndex
作为旁注,您不应该在SQL中连接字符串,就像在您的示例中一样。这使您对SQL注入攻击持开放态度。相反,您应该使用参数,如下所示:
DropDownList
然后添加&#34; @ User_ID&#34;作为您执行查询的地方的参数。