DataGrid能否在最前面绑定一序号列,显示时自增,而其与数据库无关 http://expert.csdn.net/Expert/topic/1832/1832289.xml?temp=.9627344 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 要是用 vb.net 很容易实现:<asp:TemplateColumn> <ItemTemplate> <asp:Label id=Label1 runat="server" Text='<%# DataBinder.Eval(Container, "ItemIndex")+1 %>'></asp:Label> </ItemTemplate>要是 c# 稍微复杂点用上边的方法 编译会出错用<asp:TemplateColumn> <ItemTemplate> <asp:Label id=Label1 runat="server" Text='<%# DataBinder.Eval(Container, "ItemIndex") %>'></asp:Label> </ItemTemplate的到的行号是 0,1,2,3,要想得到 1,2,3,需要用下面的方法:<asp:BoundColumn HeaderText="行号"></asp:BoundColumn>//假设为第0列在datagrid 的 itemdatabinded 事件中 private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { if (e.Item.ItemIndex >= 0) { int i = e.Item.ItemIndex +1; e.Item.Cells[0].Text = i.ToString();//0为列号 } } c#:<asp:TemplateColumn HeaderText="asdf"><ItemTemplate><FONT face="宋体"><asp:Label id=Label2 runat="server" Text='<%# Container.ItemIndex+1 %>'></asp:Label></FONT></ItemTemplate></asp:TemplateColumn> 解决了,用网络游仔的方法,我在数据库里最前面加了一个"序号"的字段,里面没有值,然后直接调用在datagrid 的 itemdatabinded 事件,即可 private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) { if (e.Item.ItemIndex >= 0) { int i = e.Item.ItemIndex +1; e.Item.Cells[0].Text = i.ToString();//0为列号 } }这样数据库里的序号是什么并不重要,显示绝对是连续的. 补充:为什么要这么做呢,如果DataGrid中有模板列,还有其它列是动态生成的,如果事先先把序号给绑定了,那么显现的结果是序号反而在后面不理想.所以只要数据库里最初字段是序号,不管其有没有数据,客户看时去是有连续的. iis访问网页 网页不更新 再次提问,找不到类型或命名空间名称问题 关于递归加载TreeView的问题,,急,求大神!!!!!!!!! asp.net网站 上传到服务器后出错了 ASP.NET 清除Cookies 还是XML的处理问题 .NET学了2年了,今天作软件因功能限制却要放弃它!! 新人求助 如何获取另外一个类里的变量值!新手入们急! asp.net不安装oracle客户端如何连接远程oracle数据库 asp.net开发:单击DataGrid能把当前行的记录分别放到上面的TextBox中。 谁有VS2003
<asp:TemplateColumn>
<ItemTemplate>
<asp:Label id=Label1 runat="server" Text='<%# DataBinder.Eval(Container, "ItemIndex")+1 %>'></asp:Label>
</ItemTemplate>
要是 c# 稍微复杂点
用上边的方法 编译会出错
用<asp:TemplateColumn>
<ItemTemplate>
<asp:Label id=Label1 runat="server" Text='<%# DataBinder.Eval(Container, "ItemIndex") %>'></asp:Label>
</ItemTemplate
的到的行号是 0,1,2,3,要想得到 1,2,3,需要用下面的方法:
<asp:BoundColumn HeaderText="行号"></asp:BoundColumn>//假设为第0列
在datagrid 的 itemdatabinded 事件中
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemIndex >= 0)
{
int i = e.Item.ItemIndex +1;
e.Item.Cells[0].Text = i.ToString();//0为列号
}
}
<asp:TemplateColumn HeaderText="asdf">
<ItemTemplate>
<FONT face="宋体">
<asp:Label id=Label2 runat="server" Text='<%# Container.ItemIndex+1 %>'>
</asp:Label></FONT>
</ItemTemplate>
</asp:TemplateColumn>
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if (e.Item.ItemIndex >= 0)
{
int i = e.Item.ItemIndex +1;
e.Item.Cells[0].Text = i.ToString();//0为列号
}
}
这样数据库里的序号是什么并不重要,显示绝对是连续的.
为什么要这么做呢,如果DataGrid中有模板列,还有其它列是动态生成的,如果事先先把序号给绑定了,那么显现的结果是序号反而在后面不理想.所以只要数据库里最初字段是序号,不管其有没有数据,客户看时去是有连续的.