在GridView中获取列索引值

3

我在asp.net中有一个gridview,在表格中有两列。 现在我必须在按钮单击时以alert的形式逐行显示dllDesc和txtBoxDesc字段的列索引值。

<asp:GridView ID="gvCar" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" AutoGenerateColumns="False" DataKeyNames="LevelID" OnRowDataBound="gvCar_RowDataBound">
            <AlternatingRowStyle BackColor="White" />
            <Columns>
                <asp:TemplateField HeaderText="Car">
                    <ItemTemplate>
                        <asp:Label ID="Car" runat="server" Width="150px" Height="30px" Font-Names="Georgia" MyCustomAttr="foo" margin-Left="100px" Text='<%# Bind("CharName") %>'></asp:Label>


                    </ItemTemplate>
                </asp:TemplateField>

                <asp:TemplateField HeaderText="Description">
                    <ItemTemplate>

                         <asp:DropDownList ID="ddlDesc" Width="142px" Height="35px" Font-Names="Georgia" margin-Left="100px" runat="server">
                         </asp:DropDownList>

                        <asp:TextBox ID="txtBoxDesc" runat="server" Width="130px" Height="28px" Font-Names="Georgia" margin-Left="100px" Text=''></asp:TextBox>

                    </ItemTemplate>
                </asp:TemplateField>

            </Columns>

        </asp:GridView> 
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />

我设法获得了行的值(以下是代码),但我找不到一种方法来显示列的值。
protected void Button1_Click(object sender, EventArgs e)
{
    foreach (GridViewRow gvr in gvCar.Rows)
    {
        string PrimaryKey = gvCar.DataKeys[gvr.RowIndex].Values[0].ToString();
        MessageBox.Show(PrimaryKey);
    }
}

有人可以帮我吗?

2个回答

0

你只需要迭代列,然后请求标题文本:

 for (int i = 0; i < gvCar.Columns.Count; i++)
 {
     string columnHeader = gvCar.Columns[i].HeaderText;
 }

根据反馈进行编辑:

我认为datatables的工作方式是这样的:

 for (int i = 0; i < dt.Columns.Count; i++)
 {
     int colIndex = dt.Columns[i].Ordinal;
 }

希望这能帮到你!


嗨,我已经成功获取了列标题名称,但我需要从数据库中获取每个列的索引号。例如: 列1 列2 1 3 3 2 4 5感谢您的帮助! - freej17
能否详细说明一下,因为据我所知,列索引从0开始并且与行索引一样递增?那么变量i就是for循环内的索引号。 - JoaVer
这些索引值是由数据库生成的。 在列中显示的每个名称都绑定到数据库中的索引。我需要显示这些索引号。<!-- language: c# --> DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[2]{ new DataColumn("CharName", typeof(string)),
new DataColumn("LevelID", typeof(int)) }); foreach (DataRow dr in dtKar.Rows) { dt.Rows.Add(dr["CharName"].ToString(), dr["LevelID"].ToString()); }
- freej17

0

只需在网格视图上像这样绑定它,无需进行其他任何操作

 <asp:TemplateField HeaderText="No.">
         <ItemTemplate>
             <%# Container.DataItemIndex + 1 %>
           </ItemTemplate>
 </asp:TemplateField>

编辑更新2

只需添加所选索引更改事件即可。

<asp:GridView ID="gvCar" runat="server" OnSelectedIndexChanged="gvCar_SelectedIndexChanged">

并且在你的cs文件中

protected void gvCar_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
               string a  = gvCar.SelectedRow.Cells[0].Text; //Write here that cell index  of index  no             
            }
            catch (Exception ex)
            {
            }
        }

如果您想通过行命令来执行此操作,请打开下面的链接

行命令示例

这将为您工作。


请问您能否发送给我如何在C#中点击按钮后返回值的代码? - freej17
请等待两分钟。 - ArunPratap

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接