我做了一个目录程序,分主次目录,主目录跟次目录都分在同一个数据表里,而主目录的classid字段的值如果为1,而次目录的classmembership字段为1,则这个此目录从属于classid为1的主目录
如下:
classid classname classmembership
1 甲主目录 0
2 乙主目录 0
3 甲次目录 1(这个1为上面甲主目录的classid)
4 乙次目录 2(这个2为上面乙主目录的classid)
我现在已经利用程序实现了将数据在gridview进行显示,并且将属同一主目录的相同数据的列单元合并成一起
比如
classmembership classname
甲次目录
甲次目录
甲次目录
甲次目录
1 甲次目录
甲次目录
甲次目录
----------------------------------
乙次目录
乙次目录
乙次目录
乙次目录
2 乙次目录
乙次目录
乙次目录
---------------------------------------这样都没有问题了。现在的问题是前面不要显示为1或2这样的数字ID,我要显示的是其依附的主目录的名字:比如甲主目录,乙主目录这样的文字。
不知道怎么实现我的做法是使用两个dataset,一个dataset是显示次目录数据,一个dataset是从前面一个dataset里取次目录的 classmembership过来做查询参数classid值进行重新查询,取主目录的名字(文字),然后显示在相应的位置,现在是这些数据被我用数组取了过来,我该如何把数组(在后台CS代码里取的)反映在前台代码(后缀名aspx)的dataview里呢?要知道数组是有维数的,就是后面中括号里的变量,传递到前台文件的话又怎么让他递增呢?这是我的思路我估计思路不对,如果你们能实现的话会用什么办法呢?
如下:
classid classname classmembership
1 甲主目录 0
2 乙主目录 0
3 甲次目录 1(这个1为上面甲主目录的classid)
4 乙次目录 2(这个2为上面乙主目录的classid)
我现在已经利用程序实现了将数据在gridview进行显示,并且将属同一主目录的相同数据的列单元合并成一起
比如
classmembership classname
甲次目录
甲次目录
甲次目录
甲次目录
1 甲次目录
甲次目录
甲次目录
----------------------------------
乙次目录
乙次目录
乙次目录
乙次目录
2 乙次目录
乙次目录
乙次目录
---------------------------------------这样都没有问题了。现在的问题是前面不要显示为1或2这样的数字ID,我要显示的是其依附的主目录的名字:比如甲主目录,乙主目录这样的文字。
不知道怎么实现我的做法是使用两个dataset,一个dataset是显示次目录数据,一个dataset是从前面一个dataset里取次目录的 classmembership过来做查询参数classid值进行重新查询,取主目录的名字(文字),然后显示在相应的位置,现在是这些数据被我用数组取了过来,我该如何把数组(在后台CS代码里取的)反映在前台代码(后缀名aspx)的dataview里呢?要知道数组是有维数的,就是后面中括号里的变量,传递到前台文件的话又怎么让他递增呢?这是我的思路我估计思路不对,如果你们能实现的话会用什么办法呢?
我都看没下去了,怎么感觉像是你把做树的样子用gridview来实现
你的这个方法是没错啦... 至于你的dataview的显示问题,建议你还是多看一些书!
FROM a INNER JOIN b ON a.classmembership=b.classid合并代码(注意要order by 要合并的字段),绑定时指定合并列的字段为classname,并在ItemDataBound作合并处理
int row=0;
private void MyDataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
//合并代码段
int rowindex = e.Item.ItemIndex;
if (rowindex - 1 < 0) return;
if (e.Item.Cells[1].Text == MyDataGrid1.Items[rowindex - 1].Cells[1].Text) //合并第一列
{
if (MyDataGrid1.Items[row].Cells[1].RowSpan == 0)
{
MyDataGrid1.Items[row].Cells[1].RowSpan++;
}
MyDataGrid1.Items[row].Cells[1].RowSpan++;
e.Item.Cells[1].Visible = false;
}
else
{
row = rowindex;
}
}以上仅供参照...
“要知道数组是有维数的,就是后面中括号里的变量”:中括号里面的是表示数组长度,不是维数在GridView里面加多一列模板列<asp:TemplateField HeaderText="test">
<ItemStyle Width="12%" />
<ItemTemplate>
<asp:Label ID="lbltest" runat="server"></asp:Label>
</ItemTemplate>
</asp:TemplateField>在GridView的OnRowDataBound属性写个函数OnRowDataBound="gwTest_RowDataBound"在这个函数里面根据classmembership的值(既然你实现了,应该都是主目录classid吧)
去数据库查对应的classname,然后lbltest.text = 查到的值;
然后在这个函数外把之前的classmembership那一列隐藏了,在把新的模板列的相同单元格合并初学者,做法比较麻烦望高人指教