注册 登录
编程论坛 ASP.NET技术论坛

[求助]就像本论坛之点击主题的'+',弹出对应的回贴列表行,这功能用GridView怎么

冰流剑 发布于 2007-04-19 10:24, 1151 次点击

现在做后台需要这功能,请各位大侠指点一二!!!

15 回复
#2
哭泣的狼2007-04-19 10:51
大哥,如果做出来了;记得给我发一份呀;
我也很需要那个东西,实在不行我们可以向版主要,也是可以行得通的;
我的邮箱是:huke_lanyanan@163.com
#3
冰流剑2007-04-19 12:25
呵呵,一定!
#4
cyyu_ryh2007-04-19 12:43
我像这个+应该是个按钮,下面的信息是隐藏起的点击+后再显示
他这个不是用GridView做的吧,我像是用datalist做的
#5
skyland842007-04-19 13:12
4楼的!我支持了!
主要是访问数据库的问题!
#6
冰流剑2007-04-19 18:10

哦,是切套的吗,DataList好象很难做出这种界面效果,有人会用GridView实现吗?!

#7
川流不息2007-04-19 18:21
我覺得應該是這樣的吧?在GridView的模板列中放一個按鈕,在按鈕事件中,得到這一行的某個ID值什麼的,然後在後台查詢得到數值,我記得在網上曾經搜尋過可以用js來對表格進行操作,比如插入一行數據。你可以上網找一下,絕對可以找到的。

當然,這是我個人猜想的,你要覺得可行,你就去試試。你要覺得不可行,那我無能為力。
#8
冰流剑2007-04-20 09:53
但GridView可不是一般的表格,用js也能实现对他的行插入吗?!

不管怎么说,先谢谢大家的宝贵意见
#9
川流不息2007-04-20 11:04

你可以在數據加載完後看一下原代碼,GridView其實就是一個Table。你用AJAX技術得到數據後用JS做操作,我想應該是可行的。

這下面是我曾經找到的資料,也試驗過可以添加的,你試一下吧。
我用GridView試過,同樣也是可行的。

table.cells(5).innerText-->得到或設置表格中第6個單元格的值
table.rows(0).cells(0).innerText-->得到或設置表格第1行第1個單元格的值

//添加一行
var newTr = testTbl.insertRow();
//添加两列
var newTd0 = newTr.insertCell();
var newTd1 = newTr.insertCell();
//设置列内容和属性
newTd0.innerHTML = '<input type=checkbox id="box4">';
newTd2.innerText= '新加行';

deleteRow(1)-->刪除某行
newTd0.innerHTML = '<input type=checkbox id="box4" onClick="GetRow()">'; -->添加其他控件在單元格中

动态添加表格行 文/Ray
表格部分代码如下:
<table id="testTbl" border=1>
<tr id="tr1">
<td width=6%><input type=checkbox id="box1"></td>
<td id="b">第一行</td>
</tr>
<tr id="tr2">
<td width=6%><input type=checkbox id="box2"></td>
<td id="b">第二行</td>
</tr>
<tr bgcolor=#0000FF>
<td width=6%><input type=checkbox id="box3"></td>
<td>第三行</td>
</tr>
</table>
动态添加表行的javascript函数如下:
function addRow(){
//添加一行
var newTr = testTbl.insertRow();
//添加两列
var newTd0 = newTr.insertCell();
var newTd1 = newTr.insertCell();
//设置列内容和属性
newTd0.innerHTML = '<input type=checkbox id="box4">';
newTd2.innerText= '新加行';
}
就这么简单,做点详细的说明:
1、inserRow()和insertCell()函数
insertRow()函数可以带参数,形式如下:
insertRow(index)
这个函数将新行添加到index的那一行前,比如insertRow(0),是将新行添加到第一行之前。默认的insertRow()函数相当于insertRow(-1),将新行添加到表的最后。
insertCell()和insertRow的用法相同。
2、动态设置属性和事件
上面行数中的innerHTML和innerText都是列的属性。
这个inner,就是“inner”到<tb></tb>之间,innerText是添加到<tb></tb>之间的文本,innerHTML是添加到<tb></tb>之间的HTML代码(这个so简单,这个解释挺多余的)
设置其他属性也是用同样的方式,比如,设置行背景色
newTr.bgColor = 'red';
设置事件也一样,需要简单说明一点。
比如,我要让点击新加行的时候执行一个自己定义的函数 newClick,newClick行数如下:
function newClick(){
alert("这是新添加的行");

对onclick事件设置这个函数的代码如下:
newTr.onclick = newClick;

#10
冰流剑2007-04-20 11:16
[川流不息]非常感谢!
#11
川流不息2007-04-20 11:19
哦,不謝,只是提供一個構想,代碼還得你自己去想。如果能夠成功,可得告訴哥們一聲。
#12
冰流剑2007-04-20 11:45
{ 用AJAX技術得到數據後用JS做操 }
怎样用AJAX技术得到数据啊!!!
#13
skyland842007-04-20 12:36
好像实现起来挺困难的!

不过也可以使用repeater来处理啊!
要是我 的话 可能是使用这个来处理了!
#14
川流不息2007-04-20 13:52
以下是引用冰流剑在2007-4-20 11:45:31的发言:
{ 用AJAX技術得到數據後用JS做操 }
怎样用AJAX技术得到数据啊!!!

這樣啊,如果你不會用AJAX技術的話,那你就刷新頁面吧。或者,你在網上搜一下,用JAVASCRIPT去查詢數據。

我把以前找的資料給你

function getData()
{
var conn = new ActiveXObject("ADODB.Connection");
conn.Open("Provider=SQLOLEDB.1; Data Source=localhost; User ID=sa; Password=; Initial Catalog=pubs");
var rs = new ActiveXObject("ADODB.Recordset");
var sql="select * from authors";
rs.open(sql, conn);
var table = document.all.myTable;
// shtml = "<table width='100%' border=1>";
// shtml +="<tr bgcolor='#f4f4f4'><td>au_id</td><td>au_lname</td><td>au_fname</td><td>phone</td><td>address</td><td> city</td><td>state</td><td>zip</td></tr>";
while(!rs.EOF)
{
//shtml += "<tr><td>" + rs("au_id") + "</td><td>" + rs("au_lname") + "</td><td>" + rs("au_fname") + "</td><td>" + rs("phone") + "</td><td>" + rs("address") + "</td><td>" + rs("city") + "</td><td>" + rs("state") + "</td><td>" + rs("zip") + "</td></tr>";
rs.moveNext;
}
// shtml += "</table>";
// document.write(shtml);
rs.close();
rs = null;
conn.close();
conn = null;
return false;
}

#15
川流不息2007-04-20 13:53
AJAX你還是要學一點的,懂總比不懂要好。
#16
冰流剑2007-04-20 17:46
o,日后再研究了,谢谢
1