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

C#中DataTable的使用,新手

2013-12-05 
C#中DataTable的使用,新手求助本人是学习VC/MFC的,最近工作需要紧急修改一个C#程序,遇到各种不明白的地方,

C#中DataTable的使用,新手求助
本人是学习VC/MFC的,最近工作需要紧急修改一个C#程序,遇到各种不明白的地方,请大家指教。
先上代码:


                        for (int i = 0; i < count; i++)
                        {
                            DataRow dr;
                            dr = dt.NewRow();
                            dr[0] = true;//false
                            dr[1] = "0";
                            dr[2] = testfilelist.result[i].releaseDate;
                            dr[3] = testfilelist.result[i].latestVersion;
                            dr[4] = testfilelist.result[i].language;
                            dr[5] = "0";//FILESIZE
                            dr[6] = testfilelist.result[i].filename;   //文件名称
                            dr[7] = testfilelist.result[i].ftpPath;   //将文件名存这
                            dr[8] = testfilelist.result[i].downloadPath;
                            dt.Rows.Add(dr);
                            dt.AcceptChanges();
                        }
                        dtdistinct.Clear();
                        dtdistinct = dt.DefaultView.ToTable(true, new string[] { "Item", "SoftWare", "Date", "Index", "Filesize" });
                        DataColumn dataColumn1 = new DataColumn("Version", typeof(String));
                        dtdistinct.Columns.Add(dataColumn1);
                        dataColumn1 = new DataColumn("Language", typeof(String));
                        dtdistinct.Columns.Add(dataColumn1);
                        dataColumn1 = new DataColumn("filepath", typeof(String));
                        dtdistinct.Columns.Add(dataColumn1);
                        dataColumn1 = new DataColumn("downloadPath", typeof(String));
                        dtdistinct.Columns.Add(dataColumn1);
                        gridControl1.DataSource = dtdistinct;
                        //datarefreshgrid();

代码的运行结果就是生成一个表格,第一列是复选框,可勾选和不选
问题:
1.新增了一个按钮,要实现所有行的第一列的全选和全不选,我的代码如下,为什么没用?应该如何修改

            DataRow drOperate = dt.Rows[3];


            drOperate.BeginEdit();
            drOperate[0] = false;
            drOperate.EndEdit();


2.以上生成的表格的表头自动具有排序和筛选功能,排序是有箭头的升序和降序,筛选是(Custom、Blanks、Non Blanks),现在只想保留前两列的排序功能,去掉后面其他列的排序功能,而且要去掉所有列的筛选功能,如何修改?
3.如何删除一行?包括前面的复选框

唉。。网上找了一些资料,但是跟自己想要的不是很符合或者满足不了需要,就比如上面的问题1是我自己找的,但是没有效果,所以一怒之下干脆就事论事,直接发帖子算了。。。先谢谢大家! C#???DataTable操作
[解决办法]
第一个问题是我没看出来那段代码符合你的描述,第一列是复选框这个我没看出来,我只看到你将第一列的数据都赋值为了true。
第二个问题那个是控件的问题,你可以直接编译的时候全选至于你说的那个有的保持有的不保持,用代码可能能实现没试过。
第三个问题如果你要删除一行,找到对应的一行datarow,然后调用delete方法就行。
最后说句换个头像吧,看你的内容看到头像都不想看了
[解决办法]
GridView表头加CheckBox按钮 .

http://blog.csdn.net/hdhai9451/article/details/4338198
[解决办法]
Table表头加checkbox

<table cellpadding="0" cellspacing="0" border="1" class="pagerlist" width="100%"
    id="MasterDataList">
    <tr class="header">
        <td style="width: 30px;">
            <input type="checkbox" id="selectAll" name="selectAll" onclick="SelectAllList();" />
        </td>
        <td style="width: 90px;">
            捐款編號
        </td>
        <td style="width: 100px;">
            捐款日期
        </td>
    </tr>
    <asp:Repeater ID="rep_Donation" runat="server">
        <AlternatingItemTemplate>
            <tr class="altrow">
                <td style="text-align: center">
                    <input type="checkbox" id="CheckBox_<%#Container.ItemIndex %>" name="SelectItemValue"
                        value='<%#Eval("ID") %>' onclick="selectItem();" />
                </td>
                <td style="text-align: center;">
                    <%#Eval("DonationNo")%>
                </td>
                <td style="text-align: center;">
                    <%#((DateTime)Eval("DonationDate")).ToDateString() %>
                </td>
            </tr>
        </AlternatingItemTemplate>
        <ItemTemplate>
            <tr class="row">
                <td style="text-align: center">
                    <input type="checkbox" id="CheckBox_<%# Container.ItemIndex %>" name="SelectItemValue"
                        value='<%#Eval("ID") %>' onclick="selectItem();" />
                </td>
                <td style="text-align: center;">


                    <%#Eval("DonationNo")%>
                </td>
                <td style="text-align: center;">
                    <%#((DateTime)Eval("DonationDate")).ToDateString() %>
                </td>
            </tr>
        </ItemTemplate>
    </asp:Repeater>
</table>

<div style="display: none;">
    <asp:TextBox runat="server" ID="txt_ActiveHiddenID"></asp:TextBox>
    <asp:HiddenField ID="txt_SelectHiddenID" runat="server" />
</div>

<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>


[解决办法]
DataRow drOperate = dt.Rows[3]; 
drOperate.BeginEdit(); 
drOperate[0] = false;
drOperate.EndEdit();
dt.AcceptChanges();
drOperate.SetModified();

SortExpression="Item"
SortExpression="SoftWare"

DataRow drOperate = dt.Rows[3]; 
drOperate.Delete();
[解决办法]
LZ公司名字都贴出来了,这样不好,你用的是第三方的gridControl?

DataRow drOperate = dt.Rows[3]; 
drOperate.BeginEdit(); 
drOperate[0] = false;
drOperate.EndEdit();
dt.AcceptChanges();
gridControl1.DataSource = dtdistinct; //重新绑定试一下,如果是datagridview会自动刷新的

不想排序筛选,可以在设计器列头的Options里设置为Disabled(通过代码也可以),你找找

ModifyStyle,可以自定义一种编辑状态的样式,切换到编辑状态后更换,结束编辑状态还原至默认样式
[解决办法]
去掉排序功能
方法:点击[gridView1],在其属性设置中找到[OptionsCustomization],将其下的[AllowSort]属性设置成False即可。

热点排行