gridview分页 使用checkbox勾选记录后保存
我在gridview上加了个checkbox,并且弄了分页,用一个stateView数组来保存了勾选的记录,这样在翻页返回的时候就能保存勾选记录。
现在的问题是,我勾选完了数据后保存的时候,我是采用了两层循环,外层,gridview的页码数量,内层每一页的勾选数,也就是相当于我把整个datasource都循环了一遍。
但是多数时候查询出来的数据量大比如23000条,但是我只勾选了第一页的两条记录,第53页的两条记录,总共就四条记录,但是我还是得循环23000次,这样就没必要了,而且还会造成session的丢失。
有没有什么办法可以把我勾选的这四条记录给保存下来,我最后保存的时候我就只取这四条记录的各个列值,而不用循环这个数据集了?谢谢各位了。
最好给点例子,代码,我新手。
[解决办法]
<table cellpadding="0" cellspacing="0" border="0" class="pagerlist" id="MasterDataList">
<tr class="header">
<td style="width: 30px;">
<input type="checkbox" id="selectAll" name="selectAll" onclick="SelectAllList();" />
</td>
<td>
預約房間
</td>
<td >
教學中心
</td>
<td>
學生
</td>
<td>
導師
</td>
</tr>
<asp:Repeater runat="server" ID="repBooking" ViewStateMode="Disabled">
<ItemTemplate>
<tr class="row" onclick="OnSelected_DataRow(this)" onmousemove="OnMouseOver_DataRow(this)"
onmouseout="OnMouseOut_DataRow(this)">
<td style="text-align: center">
<input type="checkbox" id="CheckBox_<%#Container.ItemIndex %>" name="SelectItemValue"
value='<%#Eval("td0") %>' onclick="selectItem();" />
</td>
<td class="first">
<%#Eval("td1")%>
</td>
<td>
<%#Eval("td2")%>
</td>
<td>
<%#Eval("td3")%>
</td>
<td>
<%#Eval("td4")%>
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr class="altrow" onclick="OnSelected_DataRow(this)" onmousemove="OnMouseOver_DataRow(this)"
onmouseout="OnMouseOut_DataRow(this)">
<td style="text-align: center">
<input type="checkbox" id="CheckBox_<%#Container.ItemIndex %>" name="SelectItemValue"
value='<%#Eval("td0") %>' onclick="selectItem();" />
</td>
<td class="first">
<%#Eval("td1")%>
</td>
<td>
<%#Eval("td2")%>
</td>
<td>
<%#Eval("td3")%>
</td>
<td>
<%#Eval("td4")%>
</td>
</tr>
</AlternatingItemTemplate>
</asp:Repeater>
</table>
<script language="javascript" type="text/javascript">
function SelectAllList() {
var selectAll = document.getElementById("selectAll");
var activeItemID = "";
for (var i = 0; i < document.getElementById("MasterDataList").rows.length - 1; i++) {
var chk = document.getElementById("CheckBox_" + i);
chk.checked = selectAll.checked;
if (chk.checked) {
if (activeItemID.length > 0) {
activeItemID += ",";
}
activeItemID += document.getElementById("CheckBox_" + i).value;
}
}
document.getElementById("<%=txt_SelectHiddenID.ClientID %>").value = activeItemID;
}
function selectItem() {
var activeItemID = "";
for (var i = 0; i < document.getElementById("MasterDataList").rows.length - 1; i++) {
var chk = document.getElementById("CheckBox_" + i);
if (chk.checked) {
if (activeItemID.length > 0) {
activeItemID += ",";
}
activeItemID += document.getElementById("CheckBox_" + i).value;
}
}
document.getElementById("<%=txt_SelectHiddenID.ClientID %>").value = activeItemID;
}
</script>