2013-07-07 88 views
0

使用下面的代碼,當我點擊Edit按鈕時,gridview下拉列表中的selectvalue被保留,同時保留下拉列表值的其餘部分,以便用戶可以選擇不同的值。如何在編輯模式下設置dropdownlist selectedvalue,但不在gridview中?

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表單,以便我可以更好地操作佈局。

換句話說,我有這樣的佈局:

名字:_ __ _ __ _ __ _ ___

姓:_ __ _ __ _ __ _ ____

角色:_ __ _ __ _ __ _ __ _ ___

我的理解是,在GridView控件,佈局是垂直的,而不是靈活。

我們希望我們的佈局水平。

預先感謝您的協助

回答

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.爲D emonstrates在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 { } 
} 

最好的問候,

+0

非常感謝你。我如何訪問控件ID,例如txtPhoneNumber? –

相關問題