0

With the code below, when I click the Edit button, the selectvalue in gridview dropdownlist is retained while at the same time, retaining the rest of the dropdownlist values so user can select a different value.

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

'//Markup:

<asp:Label ID="lblUserRole" runat="server" Text='<%# Eval("RoleId")%>' Visible = "false"></asp:Label>
<asp:DropDownList ID = "ddlRoles" runat = "server">
</asp:DropDownList>

These work fine for gridview.

However, I would like to change the codebehind to regular web form so I can manipulate the layout out better.

In other words, I have the layout like this:

First Name: _____________

Last Name: ______________

Roles: ________________

My understanding is that in gridview, layout is vertical and is not flexible.

We would like our layout to be horizontal.

Thank you in advance for your assistance

4

1 に答える 1

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 番目の質問 (コメント) については、リスト 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 { }
}

よろしくお願いします、

于 2013-07-07T23:05:10.783 に答える