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即可。