|M|今天面试:本以为很简单的问题,但却做不出来。非常郁闷 大家快来分析分析

zyciis57 2007-01-04 08:46:41
绑定order表后(图一)
------------------
| id | 姓名 | 业务总成绩 | |
------------------
| 1 | 小张 | 100000 |详细 |
------------------
| 2 | 小王 | 20000 |详细 |
------------------
| 3 | 小李 | 80000 |详细 |
------------------
要求是点击详细后显示该当前员工的业务详细(orderview)如点击小王(图二)
------------------
| id | 姓名 | 业务总成绩 |
------------------
| 1 | 小张 | 100000 |详细 |
------------------
| 2 | 小王 | 20000 |详细 |
------------------
| 软件工程 |06-01-12 | 8000 |
------------------
| 网站开发 |06-11-10 | 12000 |
------------------
| 3 | 小李 | 80000 |详细 |
------------------
-------------------------------------------------------------
以下是我的做法:
我本以为这个用DataList嵌套一个GridView就OK的
但是问题来了。因为DataList里面的每一行都是一个table所以绑定后显示的table变得乱七八糟,比如:
本来要求绑定后的代码为
<table>
<tr>
<td>1</td>小张<td>100000</td><td>详细</td>
</tr>
....
</table>
但是用DataList绑定后为
<table>
<tr>
<td>
<table>
<tr>
<td>1</td>小张<td>100000</td><td>详细</td>
</tr>
</table>
</td>
</tr>
....
</table>
这种格式造成数据没有对齐
做如果用GridView绑定的话图一的功能没有问题
但图二的功能就不知道要怎么实现了

请问这个问题要怎么解决
...全文
1102 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldw701 2007-01-19
  • 打赏
  • 举报
回复
mark
GXY2005 2007-01-05
  • 打赏
  • 举报
回复
幕白兄没的说!
copine 2007-01-05
  • 打赏
  • 举报
回复
不错
zyciis57 2007-01-04
  • 打赏
  • 举报
回复
真是完美啊
只是面试时要是有幕白兄在的话就好了

谢谢
zyciis57 2007-01-04
  • 打赏
  • 举报
回复
看看先
cpp2017 2007-01-04
  • 打赏
  • 举报
回复
这个方法是通过服务器事件显示,隐藏的. 还可以生成html代码后.先隐藏在客户端.通过点击,按纽显示隐藏.
cpp2017 2007-01-04
  • 打赏
  • 举报
回复
后台: protected void Page_Load(object sender, EventArgs e) { System.Collections.Hashtable ht = new Hashtable(); ht.Add("AA", true); ht.Add("BB", false); ht.Add("CC", "2"); ht.Add("DD", "3"); ht.Add("EE", "3"); this.GridView1.DataSource = ht; this.GridView1.DataBind(); } protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "detail") { int iIndex = Convert.ToInt32(e.CommandArgument); GridViewRow row = this.GridView1.Rows[iIndex]; GridViewRow NewRow = new GridViewRow(iIndex + 1, iIndex, DataControlRowType.DataRow, DataControlRowState.Normal); NewRow.Cells.Add(new TableCell()); NewRow.Cells[0].ColumnSpan = row.Cells.Count; DataTable dt = new DataTable(); dt.Columns.Add("A", typeof(string)); dt.Columns.Add("B", typeof(string)); dt.Columns.Add("C", typeof(Int32)); DataRow r1 = dt.NewRow(); r1[0] = "软件工程"; r1[1] = "06-01-12"; r1[2] = 8000; dt.Rows.Add(r1); r1 = dt.NewRow(); r1[0] = "网站开发"; r1[1] = "06-11-10"; r1[2] = 12000; dt.Rows.Add(r1); this.rp1.DataSource = dt.DefaultView; this.rp1.DataBind(); this.GridView1.Controls[0].Controls.AddAt(iIndex+2,NewRow); NewRow.Cells[0].Controls.Add(this.rp1); }
cpp2017 2007-01-04
  • 打赏
  • 举报
回复
前台: <asp:GridView AutoGenerateColumns="false" ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound" OnRowCommand="GridView1_RowCommand"> <Columns> <asp:BoundField DataField="Key" HeaderText="Key" /> <asp:BoundField DataField="Value" HeaderText="Value" /> <asp:ButtonField ButtonType="Button" Text="详细" CommandName="detail" /> </Columns> </asp:GridView> <asp:Repeater ID="rp1" runat="server"> <HeaderTemplate> <table border="1"> <tr> <td>类别</td> <td>时间</td> <td>金额</td> </tr> </HeaderTemplate> <ItemTemplate> <TR> <td><%#Eval("A")%></td> <td><%#Eval("B")%></td> <td><%#Eval("C")%></td> </TR> </ItemTemplate> <FooterTemplate> </TABLE> </FooterTemplate> </asp:Repeater>
lovelacy 2007-01-04
  • 打赏
  • 举报
回复
mark
zyciis56 2007-01-04
  • 打赏
  • 举报
回复
幕白兄
你的想法是不是
在点击详细的时候
给gridview添加一行
然后合并这一行
添加一个table?
如果是这样的话
row.Cells[0].Text
可不可以为
row.Cells[0].Controls.Add(GridView);
这样方便操作详细里面的数据?
cpp2017 2007-01-04
  • 打赏
  • 举报
回复
再等我改进一下.
cpp2017 2007-01-04
  • 打赏
  • 举报
回复
也没有加点击事件.
cpp2017 2007-01-04
  • 打赏
  • 举报
回复
这只是个简单的,里面直接写了html,没有用控件绑定数据.
cpp2017 2007-01-04
  • 打赏
  • 举报
回复
if (e.Row.RowType == DataControlRowType.DataRow) { GridViewRow row = new GridViewRow(e.Row.RowIndex + 1, e.Row.RowIndex, DataControlRowType.DataRow, DataControlRowState.Normal); this.GridView1.Controls[0].Controls.Add(row); row.Cells.Add(new TableCell()); row.Cells[0].ColumnSpan = e.Row.Cells.Count; row.Cells[0].Text = "<TABLE WIDTH ='100%' ><TR><TD>AA</TD><TD>BB</TD><TD>CC</TD></TR></TABLE>"; Response.Write(row.Cells.Count.ToString() + "**"); }
zyciis56 2007-01-04
  • 打赏
  • 举报
回复
RE:viena(维也纳nn-下潜15米,潜望镜升起) (
我也想过自己写Table但这样的话要行里面有事件的话写起来就非常麻烦
zyciis56 2007-01-04
  • 打赏
  • 举报
回复
谢谢幕白大哥
----------
PS:签名怎么改回来了
cpp2017 2007-01-04
  • 打赏
  • 举报
回复
稍等,我写个.
zyciis57 2007-01-04
  • 打赏
  • 举报
回复
UP
zyciis57 2007-01-04
  • 打赏
  • 举报
回复
RE:net_lover(【孟子E章】)
----------------
<div style="width: 100%; padding: 2px; font-weight: bold; background-color: #DEDEDE;
float: left">
<span style="float: left">栏目名称:<%#Eval("Title") %></span><span style="float: right;
color: Red; cursor: pointer" onclick="ShowHidden('<%#Eval("id") %>',event)">隐藏</span></div>
<div style="background-color: #FFF; padding-left: 60px; clear: both" id="div<%#Eval("id") %>">
-------------------
这个是你年说的显示| id | 姓名 | 业务总成绩 | |
明显你的是用Div做的。如因为你那个只有两列一个左一个右所以多了也不会错乱
而我的是显示一条记录有所多的字段如果像你这样写的话
记录多的话一定会出现错乱的而不会像用GridView绑定的那样整齐
viena 2007-01-04
  • 打赏
  • 举报
回复
自己输出table tr td字符串比较好
加载更多回复(2)

62,269

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧