C#中DataTable的使用,新手求助 C# DataTable操作 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一个问题是我没看出来那段代码符合你的描述,第一列是复选框这个我没看出来,我只看到你将第一列的数据都赋值为了true。第二个问题那个是控件的问题,你可以直接编译的时候全选至于你说的那个有的保持有的不保持,用代码可能能实现没试过。第三个问题如果你要删除一行,找到对应的一行datarow,然后调用delete方法就行。最后说句换个头像吧,看你的内容看到头像都不想看了 首先非常感谢你的回答1.复选框是怎么出来的不是关键,关键是如何将表格的所有行的第一列的值,由true设为false,只要设为了false,我想复选框就是非勾选状态了,当然,要不要调用更新显示之类的还请指教!2."可以直接编译的时候全选"什么意思?有类似于ModifyStyle之类的方法么?另,头像的事情我会考虑,目前没有找到合适的 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> 你好,没错我是想实现表头加CheckBox这样的功能,但是你给的这些是Html语言啊,我要加到我的C#代码里去其实我主要还是想知道为什么我问题1里加按钮然后添加响应函数的做法没效,应该如何修改,多谢! 上一张图我发现这里面的Run Designer可以修改很多属性啊,但是属性太多太多了,我又不熟悉,请大家帮帮忙 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,可以自定义一种编辑状态的样式,切换到编辑状态后更换,结束编辑状态还原至默认样式 话说我也不知道是不是第三方的排序和筛选我已经从属性里找到了但是按照你的代码,修改还是无法实现。绑定再加上11楼的drOperate.SetModified();也不行啊 去掉排序功能方法:点击[gridView1],在其属性设置中找到[OptionsCustomization],将其下的[AllowSort]属性设置成False即可。 惊天奇迹!!!无意中搞定了!!我模仿它初始化的时候的代码,加了一句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();都是有效的!!! 再回头来看我最初的问题描述里有这么几句:dtdistinct.Clear();dtdistinct = dt.DefaultView.ToTable(true, new string[] { "Item", "SoftWare", "Date", "Index", "Filesize" });....................gridControl1.DataSource = dtdistinct;原来dt只是临时工,后面转移到dtdistinct去了吧 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; } } 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; } } ////////////////////// 安装了VS2008的朋友,请帮一下忙,万分感激。 请教如何用RGB表示数值大小? 求一个数据库查询 datagrid选择并在textbox中显示的问题(2) 如何在winform里显示类似acdsee的图片显示列表,带滚动功能的? 请问用WebBrowser如何显示地址栏啊? 关于Xml的简单问题 像VS一样打开每个文件 小弟打算学c#,各位大侠推荐几本好书 我做了一个fpt的程序,结果发现文件列表不能处理汉字,不知如何处理? Dictionary 查找相近的两个值。 求教一个关于字符串处理的问题
第二个问题那个是控件的问题,你可以直接编译的时候全选至于你说的那个有的保持有的不保持,用代码可能能实现没试过。
第三个问题如果你要删除一行,找到对应的一行datarow,然后调用delete方法就行。
最后说句换个头像吧,看你的内容看到头像都不想看了
1.复选框是怎么出来的不是关键,关键是如何将表格的所有行的第一列的值,由true设为false,只要设为了false,我想复选框就是非勾选状态了,当然,要不要调用更新显示之类的还请指教!
2."可以直接编译的时候全选"什么意思?有类似于ModifyStyle之类的方法么?另,头像的事情我会考虑,目前没有找到合适的
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>
我发现这里面的Run Designer可以修改很多属性啊,但是属性太多太多了,我又不熟悉,请大家帮帮忙
drOperate.BeginEdit();
drOperate[0] = false;
drOperate.EndEdit();
dt.AcceptChanges();
drOperate.SetModified();SortExpression="Item"
SortExpression="SoftWare"DataRow drOperate = dt.Rows[3];
drOperate.Delete();
drOperate.BeginEdit();
drOperate[0] = false;
drOperate.EndEdit();
dt.AcceptChanges();
gridControl1.DataSource = dtdistinct; //重新绑定试一下,如果是datagridview会自动刷新的不想排序筛选,可以在设计器列头的Options里设置为Disabled(通过代码也可以),你找找ModifyStyle,可以自定义一种编辑状态的样式,切换到编辑状态后更换,结束编辑状态还原至默认样式
排序和筛选我已经从属性里找到了
但是按照你的代码,修改还是无法实现。绑定再加上11楼的drOperate.SetModified();也不行啊
方法:点击[gridView1],在其属性设置中找到[OptionsCustomization],将其下的[AllowSort]属性设置成False即可。
惊天奇迹!!!无意中搞定了!!
我模仿它初始化的时候的代码,加了一句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();
都是有效的!!!
dtdistinct = dt.DefaultView.ToTable(true, new string[] { "Item", "SoftWare", "Date", "Index", "Filesize" });
..........
..........
gridControl1.DataSource = dtdistinct;原来dt只是临时工,后面转移到dtdistinct去了吧
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;
}
}
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;
}
}
//////////////////////