Gridview的问题
string strsql="select * from gain";
string keyid="gain_id";
sqlconn = new SqlConnection(connstr);
sqlcomd = new SqlCommand(strsql, sqlconn);
sqlconn.Open();
GridView.DataSource = sqlcomd.ExecuteReader(CommandBehavior.CloseConnection);
GridView.DataKeyNames = new string[] { keyid };
GridView.DataBind();
sqlconn.Close();
这样写的话会讲gain表中所有的数据项都显示在gridview中,但我现在只要求显示一部分,例如只显示gain_name,gain_num.该怎么样实现呢?不能够用
<asp:BoundField datafield="gain_name" headertext="获取名称">
<HeaderStyle width="90px"></HeaderStyle>
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
因为gridview会绑定到不同的表,不能够写死了!该怎么办呢?
问题点数:20、回复次数:18Top
1 楼flysky913()回复于 2006-03-17 22:48:54 得分 0
补充一点,也不能够用select gain_name,gain_num from gain.因为我要讲主键gain_id读取出来,但有不能够讲主键显示在gridview中!Top
2 楼cdsun()回复于 2006-03-17 22:52:06 得分 0
让不显示的那个列隐藏起来行不行Top
3 楼zhoumins(zm)回复于 2006-03-17 22:54:04 得分 10
GRidview里设置,
不要自动生成列,逐个添加所需列。Top
4 楼flysky913()回复于 2006-03-17 22:54:04 得分 0
关键是我不知道怎么隐藏,详细解释一下,好吗?Top
5 楼flysky913()回复于 2006-03-17 22:56:15 得分 0
在后台怎么逐个添加显示列呢?我是一个初学者,麻烦指教!Top
6 楼antiking(生活就象拉大便有时顺畅有时不顺畅.)回复于 2006-03-18 09:44:37 得分 5
AutoGenerateColumns="False" 这个设置为false
<Columns>
<asp:BoundColumn DataField="tbid" Visible="false" ItemStyle-Width="5%" ItemStyle-ForeColor="#000000" ItemStyle-BorderColor="#666666" ItemStyle-Font-Bold="true" ItemStyle-BackColor="buttonface" SortExpression="tbid" HeaderText="流水号"> </asp:BoundColumn>
<asp:BoundColumn DataField="JobNo" ItemStyle-Width="25%" SortExpression="JobNo" ItemStyle-ForeColor="#333366" ItemStyle-Font-Bold="true" HeaderText="流水号"> </asp:BoundColumn>
<asp:BoundColumn DataField="JobType" ItemStyle-Width="20%" ItemStyle-ForeColor="#333366" SortExpression="JobType" HeaderText="货代提单号"> </asp:BoundColumn>
<asp:BoundColumn DataField="BookingDate" DataFormatString="{0:d}" ItemStyle-Width="20%" ItemStyle-ForeColor="#333366" SortExpression="BookingDate" HeaderText="订舱日期"> </asp:BoundColumn>
<asp:BoundColumn DataField="BookingDate" DataFormatString="{0:d}" ItemStyle-Width="20%" ItemStyle-ForeColor="#333366" SortExpression="BookingDate" HeaderText="处理日期"> </asp:BoundColumn>
<asp:BoundColumn DataField="SpGroup" ItemStyle-Width="10%" ItemStyle-ForeColor="#333366" SortExpression="SpGroup" HeaderText="区域"> </asp:BoundColumn>
</columns>
</asp:datagrid>Top
7 楼antiking(生活就象拉大便有时顺畅有时不顺畅.)回复于 2006-03-18 09:45:24 得分 0
别忘记给分Top
8 楼flysky913()回复于 2006-03-18 11:01:48 得分 0
antiking(结构是值类型),谢谢!
你这样实现我也知道!但是你这样实现的话gridview就只能够与一个数据库进行绑定,这不是我想要的结果!我现在要的效果是:当点击botton1时在gridview中显示botton1数据表中的内容,当点击botton2时在gridview中显示botton2数据表中的内容。同时要将每个表中的主键读取出来但不显示在gridview中!Top
9 楼flysky913()回复于 2006-03-18 11:08:22 得分 0
我现在的思路AutoGenerateColumns="True" 这个设置为true.根据select语句中读取的字段显示在datagrid中,但是不能够将主键显示在gridview中。
楼上zhoumins(zm) 说的不要自动生成列,逐个添加所需列,是指用antiking(结构是值类型)那样的方法增加吗?
楼上cdsun() 说的列隐藏是不是指 Visible="false" ?
如果是这样的话好象行不通的!Top
10 楼hblzg(心开风神)回复于 2006-03-18 12:27:36 得分 5
楼主,对于你说的点击一个按钮出现一个表内容,点击另外一个按钮出现另外一个表内容。我的方法是,在页面上建立两个SqlDataSource,用向导很简单的。
然后在后台,按钮的click事件中,分别对SqlDataSource进行绑定。
还有不显示某些列的方法是,创建GridView后,然后编辑列,出现对话框中不勾选自动生成列。
将不显示的主键移除就可以了。
Top
11 楼flysky913()回复于 2006-03-18 19:55:27 得分 0
hblzg(心开风神) 的方法行的通吗?我先去试试看!Top
12 楼dh20156(风之石)回复于 2006-03-18 21:22:39 得分 0
用不同的SqlDataSource绑定到同一个GridView是比较有效的方法。Top
13 楼axe1920(有时想看看)回复于 2006-03-18 21:44:02 得分 0
因为使用databind好像能使数据刷新并重新显示,msdn中好像有类似的代码,大概是点一个grid中相应button后会在旁边的的一个grid中或加或减一行Top
14 楼job_2006(初学.net)回复于 2006-03-18 21:47:12 得分 0
帮你顶一下Top
15 楼flysky913()回复于 2006-03-18 23:04:13 得分 0
建立两个SqlDataSource,然后绑定的话怎么将不显示的主键移除了?
因为我要将两个SqlDataSource中涉及到的表中的主键都不显示!Top
16 楼flysky913()回复于 2006-03-19 19:09:19 得分 0
试了一下,如果建立两个SqlDataSource的话可以绑定.但仍然解决不了不显示主键的问题!请问在onclick事件中对对sqldatasource进行绑定后怎么样解决不显示主键的问题呢?Top
17 楼haojian(鸡急了也会飞)回复于 2006-03-19 19:33:24 得分 0
编辑列里将主键列移除
Top
18 楼flysky913()回复于 2006-03-20 13:45:53 得分 0
谢谢各位的帮助,关心,支持!问题我自己已经解决了!
在后台动态的加入列,用GridView.Columns.Add(),加入你想要加入的列就可以了!
haojian(鸡急了也会飞) :你说的在编辑列里将主键列移除在我这里行不通的!Top




