C#中DataTable的使用,新手求助

凌乱哥 2013-12-03 05:35:33
本人是学习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是我自己找的,但是没有效果,所以一怒之下干脆就事论事,直接发帖子算了。。。先谢谢大家!
...全文
525 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
凌乱哥 2014-04-28
  • 打赏
  • 举报
回复

            string  strLine = "";
            ////////////
            if (System.IO.File.Exists(@"CurVer.txt"))
            {
                FileStream aFile = new FileStream("CurVer.txt", FileMode.Open);
                StreamReader sr = new StreamReader(aFile);
                strLine = sr.ReadLine();
                sr.Close();
            }
            ////////////


//////////////////////
                            if (testfilelist.result[i].filename == "UPDATETOOLS")
                            {
                                if (strLine == "")
                                {
                                    FileStream verFile = new FileStream("CurVer.txt", FileMode.OpenOrCreate);
                                    StreamWriter sw = new StreamWriter(verFile);
                                    sw.WriteLine(testfilelist.result[i].latestVersion);
                                    sw.Close();
                                    continue;
                                }
                                else
                                {
                                    strLine = strLine.Substring(1);
                                    string strVerServer = testfilelist.result[i].latestVersion;
                                    strVerServer = strVerServer.Substring(1);
                                    float xLocal = float.Parse(strLine);
                                    float xServer = float.Parse(strVerServer);
                                    if (xServer > xLocal)
                                    {
                                        dt.Clear();
                                        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();
                                        break;
                                    }
                                    else
                                        continue;
                                }
                            }
                            //////////////////////
凌乱哥 2014-04-25
  • 打赏
  • 举报
回复

       private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            int iRowCnt = dtdistinct.Rows.Count;
            bool bCheck = false;
            if (checkBox1.Checked)
                bCheck = true;
            else
                bCheck = false;
            for (int i = 0; i < iRowCnt; i++)
            {
                DataRow drOperate = dtdistinct.Rows[i];
                drOperate[0] = bCheck;
            }
        }
凌乱哥 2013-12-04
  • 打赏
  • 举报
回复
引用 12 楼 dongxinxi 的回复:
LZ公司名字都贴出来了,这样不好,你用的是第三方的gridControl? DataRow drOperate = dt.Rows[3]; drOperate.BeginEdit(); drOperate[0] = false; drOperate.EndEdit(); dt.AcceptChanges(); gridControl1.DataSource = dtdistinct; //重新绑定试一下,如果是datagridview会自动刷新的 不想排序筛选,可以在设计器列头的Options里设置为Disabled(通过代码也可以),你找找 ModifyStyle,可以自定义一种编辑状态的样式,切换到编辑状态后更换,结束编辑状态还原至默认样式
话说我也不知道是不是第三方的 排序和筛选我已经从属性里找到了 但是按照你的代码,修改还是无法实现。绑定再加上11楼的drOperate.SetModified();也不行啊。。。
凌乱哥 2013-12-04
  • 打赏
  • 举报
回复
引用 11 楼 hanfeng_st 的回复:
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,可以自定义一种编辑状态的样式,切换到编辑状态后更换,结束编辑状态还原至默认样式
hanfeng_st 2013-12-04
  • 打赏
  • 举报
回复
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();
凌乱哥 2013-12-04
  • 打赏
  • 举报
回复
上一张图
我发现这里面的Run Designer可以修改很多属性啊,但是属性太多太多了,我又不熟悉,请大家帮帮忙
shighui 2013-12-04
  • 打赏
  • 举报
回复
恩,好的呢。
凌乱哥 2013-12-04
  • 打赏
  • 举报
回复
引用 7 楼 hdhai9451 的回复:
Table表头加checkbox
你好,没错我是想实现表头加CheckBox这样的功能,但是你给的这些是Html语言啊,我要加到我的C#代码里去。。。其实我主要还是想知道为什么我问题1里加按钮然后添加响应函数的做法没效,应该如何修改,多谢!
凌乱哥 2013-12-04
  • 打赏
  • 举报
回复
引用 19 楼 cs19931217 的回复:
学习了,谢谢楼主
不客气。。。你的ID暴露了你的生日
138844 2013-12-04
  • 打赏
  • 举报
回复
学习了,谢谢楼主
凌乱哥 2013-12-04
  • 打赏
  • 举报
回复
再回头来看我最初的问题描述里有这么几句:

dtdistinct.Clear();
dtdistinct = dt.DefaultView.ToTable(true, new string[] { "Item", "SoftWare", "Date", "Index", "Filesize" });
..........
..........
gridControl1.DataSource = dtdistinct;
原来dt只是临时工,后面转移到dtdistinct去了吧
凌乱哥 2013-12-04
  • 打赏
  • 举报
回复
惊天奇迹!!!无意中搞定了!! 我模仿它初始化的时候的代码,加了一句dtdistinct.Clear();结果整个表格就消失了,那一瞬间,我灵魂出窍,我屮艸芔茻,难道我的操作对象搞错了?于是我把: DataRow drOperate = dt.Rows[3]; drOperate.BeginEdit(); drOperate[0] = false; drOperate.EndEdit(); dt.AcceptChanges(); gridControl1.DataSource = dtdistinct; 换成了 DataRow drOperate = dtdistinct.Rows[3]; drOperate.BeginEdit(); drOperate[0] = false; drOperate.EndEdit(); dt.AcceptChanges(); gridControl1.DataSource = dtdistinct; 就OK了! 并且后面我还发现,上面那样写太多余了,直接 DataRow drOperate = dtdistinct.Rows[3]; drOperate[0] = false; 或者 DataRow drOperate = dtdistinct.Rows[3]; drOperate.Delete(); 都是有效的!!!
凌乱哥 2013-12-04
  • 打赏
  • 举报
回复
引用 15 楼 zaz770977934 的回复:
去掉排序功能 方法:点击[gridView1],在其属性设置中找到[OptionsCustomization],将其下的[AllowSort]属性设置成False即可。
恩,是的,麻烦大侠帮忙看看如何修改其中一行或者删除一行,多谢多谢
zaz770977934 2013-12-04
  • 打赏
  • 举报
回复
去掉排序功能 方法:点击[gridView1],在其属性设置中找到[OptionsCustomization],将其下的[AllowSort]属性设置成False即可。
Andy__Huang 2013-12-03
  • 打赏
  • 举报
回复
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>
Andy__Huang 2013-12-03
  • 打赏
  • 举报
回复
GridView表头加CheckBox按钮 . http://blog.csdn.net/hdhai9451/article/details/4338198
wind_cloud2011 2013-12-03
  • 打赏
  • 举报
回复
帅多了
凌乱哥 2013-12-03
  • 打赏
  • 举报
回复
欢迎大家踊跃安心的来回帖
凌乱哥 2013-12-03
  • 打赏
  • 举报
回复
头像已换,看看效果
加载更多回复(2)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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