none
ASP.NET combox控件如何嵌套在Gridview中使用? RRS feed

  • 问题

  • 我想在Gridview中一行的末尾使用Combox控件。每当点击combox控件的时候触发事件。并能获取到当前行的信息。
    2016年9月4日 13:55

答案

  • 你好,

    可以详细说明一下什么是combox控件吗?

    我在VS中没有发现有这个控件。

    如果是三方的控件,请你贴一下相关的链接。

    另外,如果你想要在gridview添加一个新行的话,你可以在girdview设计模板中点击添加新行,然后使用TemplateField

    Source模式中的TemplateField中添加你想要的控件。

    你可以参照下图和下列代码。

    <asp:TemplateField HeaderText="ComBox">
                        <ItemTemplate>
                            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
                        </ItemTemplate>
                    </asp:TemplateField>
    

    如果你想要点击控件获取当前行的信息的话,你可以使用((GridViewRow)((sender as Control)).NamingContainer).RowIndex来获取当前行的信息,

    然后用GridView1.Rows[Index]定位到具体的行,使用row.Cells[0].Text获取行的内容。

    注:因为我不知道combox控件是什么,我使用了button控件代替。

    详细代码如下:

    Aspx

        <div>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Id" DataSourceID="SqlDataSource1">
                <Columns>
                    <asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" ReadOnly="True" SortExpression="Id" />
                    <asp:BoundField DataField="name" HeaderText="name" SortExpression="name" />
                    <asp:BoundField DataField="password" HeaderText="password" SortExpression="password" />
                    <asp:BoundField DataField="State" HeaderText="State" SortExpression="State" />
                    <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" />
                    <asp:TemplateField HeaderText="ComBox">
                        <ItemTemplate>
                            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
            <br />
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:UserConnectionString %>" SelectCommand="SELECT * FROM [UserInfo2]"></asp:SqlDataSource>
            <hr/>
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        
        &nbsp;&nbsp;&nbsp;
            <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
    &nbsp;&nbsp;
            <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
    &nbsp;&nbsp;
            <asp:Label ID="Label4" runat="server" Text="Label"></asp:Label>
    &nbsp;
            <asp:Label ID="Label5" runat="server" Text="Label"></asp:Label>
    </div>
    

    后台代码:

    protected void Button1_Click(object sender, EventArgs e)
            {
                int Index = ((GridViewRow)((sender as Control)).NamingContainer).RowIndex;
                GridViewRow row = GridView1.Rows[Index];
                Label1.Text = row.Cells[0].Text;
                Label2.Text = row.Cells[1].Text;
                Label3.Text = row.Cells[2].Text;
                Label4.Text = row.Cells[3].Text;
                Label5.Text = row.Cells[4].Text;
    
            }
    



    2016年9月5日 6:19

全部回复

  • 你好,

    可以详细说明一下什么是combox控件吗?

    我在VS中没有发现有这个控件。

    如果是三方的控件,请你贴一下相关的链接。

    另外,如果你想要在gridview添加一个新行的话,你可以在girdview设计模板中点击添加新行,然后使用TemplateField

    Source模式中的TemplateField中添加你想要的控件。

    你可以参照下图和下列代码。

    <asp:TemplateField HeaderText="ComBox">
                        <ItemTemplate>
                            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
                        </ItemTemplate>
                    </asp:TemplateField>
    

    如果你想要点击控件获取当前行的信息的话,你可以使用((GridViewRow)((sender as Control)).NamingContainer).RowIndex来获取当前行的信息,

    然后用GridView1.Rows[Index]定位到具体的行,使用row.Cells[0].Text获取行的内容。

    注:因为我不知道combox控件是什么,我使用了button控件代替。

    详细代码如下:

    Aspx

        <div>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Id" DataSourceID="SqlDataSource1">
                <Columns>
                    <asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" ReadOnly="True" SortExpression="Id" />
                    <asp:BoundField DataField="name" HeaderText="name" SortExpression="name" />
                    <asp:BoundField DataField="password" HeaderText="password" SortExpression="password" />
                    <asp:BoundField DataField="State" HeaderText="State" SortExpression="State" />
                    <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" />
                    <asp:TemplateField HeaderText="ComBox">
                        <ItemTemplate>
                            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
            <br />
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:UserConnectionString %>" SelectCommand="SELECT * FROM [UserInfo2]"></asp:SqlDataSource>
            <hr/>
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        
        &nbsp;&nbsp;&nbsp;
            <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
    &nbsp;&nbsp;
            <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
    &nbsp;&nbsp;
            <asp:Label ID="Label4" runat="server" Text="Label"></asp:Label>
    &nbsp;
            <asp:Label ID="Label5" runat="server" Text="Label"></asp:Label>
    </div>
    

    后台代码:

    protected void Button1_Click(object sender, EventArgs e)
            {
                int Index = ((GridViewRow)((sender as Control)).NamingContainer).RowIndex;
                GridViewRow row = GridView1.Rows[Index];
                Label1.Text = row.Cells[0].Text;
                Label2.Text = row.Cells[1].Text;
                Label3.Text = row.Cells[2].Text;
                Label4.Text = row.Cells[3].Text;
                Label5.Text = row.Cells[4].Text;
    
            }
    



    2016年9月5日 6:19
  • 我想在Gridview中一行的末尾使用Combox控件。每当点击combox控件的时候触发事件。并能获取到当前行的信息。
    Combobox是WinForm的说法,ASP.NET是DropdownList。

    ASP.NET Forum
    StackOverFlow
    FreeRice Donate
    Issues to report
    Free Tech Books Search and Download

    2016年9月11日 8:59