gridview透过列名获取索引
gridview通过列名获取索引
我在网页里放置了一个gridview。并绑定了一个数据库。在前台的代码如下:
<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333"
onrowdatabound="GridView1_RowDataBound" Height="142px"
Width="100%" BackColor="White" BorderColor="#CCCCCC" BorderWidth="1px"
PageIndex="10">
<AlternatingRowStyle BackColor="White" />
<EditRowStyle BackColor="#2461BF" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
<Columns>
<asp:TemplateField HeaderText="Choose">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack=true />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我希望在我查询的数据前加一列checkbox。因为查询的数据列行数根据条件不同有多种结果,所以并没有在colums中定义其他的列。结果如下:

在用户选中某行的checkbox后,需要取出这一行中某一列的数据如“Test point”。我写了一段代码来通过列的名称来获取索引。
public static int GetColumnIndex(GridView gridview, string fieldName)
{
int index = -1;
GridViewRow gvr = gridview.HeaderRow;
for (int i = 0; i < gridview.Columns.Count; i++)
{
if(string.Compare(gvr.Cells[i].Text, fieldName,true) == 0)
index = i;
}
return index;
}
在调试中我发现gridview.columns.count为1,且text为“choose”。也就是只有第一列的数据。不知知否是我在前台页面没有绑定其他columns还是其他问题,请指教。
------解决思路----------------------
没有办法 直接操作数据源么?
我在网页里放置了一个gridview。并绑定了一个数据库。在前台的代码如下:
<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333"
onrowdatabound="GridView1_RowDataBound" Height="142px"
Width="100%" BackColor="White" BorderColor="#CCCCCC" BorderWidth="1px"
PageIndex="10">
<AlternatingRowStyle BackColor="White" />
<EditRowStyle BackColor="#2461BF" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
<Columns>
<asp:TemplateField HeaderText="Choose">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack=true />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我希望在我查询的数据前加一列checkbox。因为查询的数据列行数根据条件不同有多种结果,所以并没有在colums中定义其他的列。结果如下:
在用户选中某行的checkbox后,需要取出这一行中某一列的数据如“Test point”。我写了一段代码来通过列的名称来获取索引。
public static int GetColumnIndex(GridView gridview, string fieldName)
{
int index = -1;
GridViewRow gvr = gridview.HeaderRow;
for (int i = 0; i < gridview.Columns.Count; i++)
{
if(string.Compare(gvr.Cells[i].Text, fieldName,true) == 0)
index = i;
}
return index;
}
在调试中我发现gridview.columns.count为1,且text为“choose”。也就是只有第一列的数据。不知知否是我在前台页面没有绑定其他columns还是其他问题,请指教。
------解决思路----------------------
没有办法 直接操作数据源么?