【问题标题】:Get column index values in gridview在gridview中获取列索引值
【发布时间】:2018-10-28 12:32:03
【问题描述】:

我在 asp.net 中有一个 gridview,在表中我有两列。 现在我必须在按钮单击时以 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);
    }
}

有人可以帮帮我吗?

【问题讨论】:

    标签: asp.net gridview


    【解决方案1】:

    在网格视图上这样绑定就行了,不需要做任何其他事情

     <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)
                {
                }
            }
    

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

    Row command example

    这对你有用

    【讨论】:

    • 能否请您给我发送代码如何在 c# 中单击按钮时返回值?
    • 等两个薄荷糖
    【解决方案2】:

    您只需遍历列,然后请求标题文本:`

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

    反馈后编辑:

    对于数据表,我认为它是这样工作的:

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

    希望这会有所帮助!

    【讨论】:

    • 嗨,我设法只获取列标题名称,但我需要为每一列从数据库中获取索引号。示例:列 1 列 2 1 3 3 2 4 5 感谢您的帮助!
    • 您能否详细说明一下,因为据我所知,列索引从 0 开始,并且与行索引相同?那么变量 i 就是 for 循环中的索引号。
    • 此索引值由数据库生成。列中显示的每个名称都绑定到数据库中的索引。我需要显示那些索引号。 DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[2]{ new DataColumn("CharName", typeof(string)), new DataColumn("LevelID", typeof(int)) }); foreach (dtKar.Rows 中的 DataRow dr) { dt.Rows.Add(dr["CharName"].ToString(), dr["LevelID"].ToString()); }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    相关资源
    最近更新 更多