使用下面的代码,当我单击Edit按钮时,gridview下拉列表中的selectvalue会被保留,同时保留其余的下拉列表值,以便用户可以选择不同的值。
Protected Sub RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow AndAlso gvCustomers.EditIndex = e.Row.RowIndex Then
Dim ddlRoles As DropDownList = DirectCast(e.Row.FindControl("ddlRoles"), DropDownList)
Dim query As String = "select RoleId, Roles from ROLES"
Dim cmd As New SqlCommand(query)
ddlRoles.DataSource = GetData(cmd)
ddlRoles.DataTextField = "Roles"
ddlRoles.DataValueField = "RoleId"
ddlRoles.DataBind()
ddlRoles.Items.FindByValue(TryCast(e.Row.FindControl("lblUserRole"), Label).Text).Selected = True
End If
End Sub
“//标记:
<asp:Label ID="lblUserRole" runat="server" Text='<%# Eval("RoleId")%>' Visible = "false"></asp:Label>
<asp:DropDownList ID = "ddlRoles" runat = "server">
</asp:DropDownList>
这些适用于gridview。
但是,我想将代码隐藏更改为常规Web表单,以便我可以更好地操作布局。
换句话说,我有这样的布局:
名字: _ __ _ __ _ __ _ ___ < / p>
姓氏: _ __ _ __ _ __ _ ____ < / p>
角色: _ __ _ __ _ __ _ __ _ ___
我的理解是在gridview中,布局是垂直的,不灵活。
我们希望我们的布局是水平的。
提前感谢您的帮助
答案 0 :(得分:0)
您必须使用TemplateField
,在该模板中,您可以指定布局,其中可能包含多个字段,并使用不同的控件进行编辑/插入操作,如下例所示:
清单1。
<asp:TemplateField HeaderText="Toll-Free: Area/Phone #">
<ItemTemplate>
(
<%# DataBinder.Eval( Container.DataItem, "A_TollFree_AreaCode" )%>
)
<%# DataBinder.Eval(Container.DataItem, "A_TollFree_Number")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtAreaCode" runat="server"
CssClass="phoneAreaCode" MaxLength="3"
Text='<%# Bind("A_TollFree_AreaCode") %>' />
<asp:TextBox ID="txtPhoneNumber" runat="server"
CssClass="phoneNumber" MaxLength="20"
Text='<%# Bind("A_TollFree_Number") %>' />
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="txtAreaCode" runat="server"
CssClass="phoneAreaCode" MaxLength="3"
Text='<%# Bind("A_TollFree_AreaCode") %>' />
<asp:TextBox ID="txtPhoneNumber" runat="server"
CssClass="phoneNumber" MaxLength="20"
Text='<%# Bind("A_TollFree_Number") %>' />
</EditItemTemplate>
</InsertItemTemplate>
</asp:TemplateField>
关于第二个问题(在评论中),请参阅清单2.它演示了访问GridView
中各种控件的一般技巧:
清单2。
protected void GridView1_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
try
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string _strPhone = DataBinder.Eval(e.Row.DataItem, "txtPhoneNumber").ToString();
Button btn = (Button)e.Row.Cells[0].Controls[1];
}
}
catch { }
}
最诚挚的问候,