首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

gridview分页 使用checkbox勾选记要后保存

2013-11-29 
gridview分页 使用checkbox勾选记录后保存我在gridview上加了个checkbox,并且弄了分页,用一个stateView数

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>


[解决办法]
勾选就是前端可以完成的,没有必要用那么多次循环.数据保存时,也只要循环当前页,不知道你是什么做,要循环那么多次,方法不对
[解决办法]
那就用弹出层做呀.先在弹出层查询过滤数据,再勾选你想要的记录,按"确定"后显示在datagridview里
[解决办法]
在CheckBox的CheckedChanged事件中,保存当前行的主键值到一个数组中.
[解决办法]
不懂,纯顶gridview分页 使用checkbox勾选记要后保存
[解决办法]
建议当前页面勾选后就做处理,翻页后须重新勾选再做处理,这样设计应该好很多了
[解决办法]
勾选checkbox时,先保存ID,最后再做处理
[解决办法]
为gv里的checkbox添加点击事件,在事件里把当前选中的数据的ID,记录到一个隐藏域里用,隔开。每次你点击CheckBox都对隐藏域里的数据做操作,你翻页的时候就读取隐藏域里的值来确定CheckBox的选中状态,当你保存的时候,就只处理隐藏域里的ID对应的数据就行。

热点排行