我有一个DataTable,我手动创建并使用C#加载数据.
在SQL Server 2005中创建使用DataTable中的列和数据的表的最有效方法是什么?
我不明白为什么这段代码不起作用.
foreach (DataRow dataRow in dataTable.Rows)
{
if (true)
{
dataRow.Delete();
}
}
Run Code Online (Sandbox Code Playgroud) 当我们使用datatable.newrow命令时,会在行的底部添加一个新的空行.但是我希望newrow添加到数据表的顶部.我该怎么做?
我有一个DataTable,它有许多列.其中一些列可以为空.
DataTable dt; // Value set.
DataRow dr; // Value set.
// dr["A"] is populated from T-SQL column defined as: int NULL
Run Code Online (Sandbox Code Playgroud)
那么,什么是从DataRow中的值转换为可空变量的最干净形式.
理想情况下,我可以做类似的事情:
int? a = dr["A"] as int?;
Run Code Online (Sandbox Code Playgroud)
编辑:原来你可以这样做,副作用是如果你的Schema类型没有整数,那么这总是会返回null.Ruben使用的答案dr.Field<int?>("A")确保类型不匹配不会无声地失败.当然,这将通过彻底的单元测试来获得.
相反,我通常会输入以下内容:
int? a = dr["A"] != DBNull.Value ? (int)dr["A"] : 0;
Run Code Online (Sandbox Code Playgroud)
这是一堆更多的击键,但更重要的是,有更多的空间让某人用错误的击键来填充内容.是的,单元测试会选择它,但我宁愿完全停止它.
对于这种情况,什么是最干净,最不容易出错的模式.
我参与了一个C#学习过程,到目前为止进展顺利.然而,我刚刚打了我的第一个"说什么?" 时刻.
DataTable提供对其Rows集合的随机行访问,不仅通过典型的集合行为,还通过DataTable.Select.但是,我似乎无法将此功能与DataRow.Delete联系起来.到目前为止,这是我需要做的,以便有条件地从表中删除一行或多行.
int max = someDataTable.Rows.Count - 1;
for(int i = max; i >= 0; --i)
{
if((int)someDataTable.Rows[i].ItemArray[0] == someValue)
{
someDataTable.Rows[i].BeginEdit();
someDataTable.Rows[i].Delete();
}
else
break;
}
someDataTable.AcceptChanges();
Run Code Online (Sandbox Code Playgroud)
但我对这段代码不满意.我都不相信.我肯定错过了什么.如果我需要有条件地删除一行或多行,我真的被迫按顺序点击Rows集合吗?
(不介意反转.我正在从数据表的末尾删除.所以没关系)
我正在使用PrimeFaces 3.0-M3,我有<p:dataTable>两列.我希望第一列固定在20px的宽度.另一列可以使用留下的任何空间.
以下是我目前获得的截图:


第一个<p:column>似乎忽略了style应该限制宽度的设置.它的尺寸太大,不适合小的彩色方块,它是其中唯一的内容,然后另一列被推得太远.
这里有更多我的Facelet代码:
<p:dataTable
id="dataTableExpressions"
value="#{catconBean.userDefinedExpressionDataModel}"
var="currentRow"
emptyMessage="!! EMPTY TABLE MESSAGE !!"
selection="#{catconBean.userDefinedExpressionToEdit}"
selectionMode="single">
<p:ajax
event="rowSelect"
listener="#{catconBean.onUserDefinedExpressionRowSelect}"
update=":toolbarForm:catconToolbar" />
<p:ajax
event="rowUnselect"
listener="#{catconBean.onUserDefinedExpressionRowUnselect}"
update=":toolbarForm:catconToolbar" />
<p:column id="paletteColor" style="width:20px;">
<h:panelGroup
layout="block"
rendered="#{not empty currentRow.paletteColor}"
style="width:16px;height:16px;border:thin;border-style:solid;border-color:black;background-color:##{currentRow.paletteColor.RGB};" />
<h:panelGroup
layout="block"
rendered="#{empty currentRow.paletteColor}"
style="width:16px;height:16px;border:thin;border-style:dashed;border-color:red;background-color:white;text-align:center;">
<h:outputText value="?" style="color:red;font-weight:bold;" />
</h:panelGroup>
</p:column>
<p:column id="name">
<f:facet name="header">
<h:outputText value="#{bundle.catcon_label_CategoryName}" />
</f:facet>
<h:outputText
value="#{currentRow.name}"
style="#{not currentRow.definitionComplete ? 'color:red;' : ''}" />
</p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我如何修改我的Facelet代码,使第一列的固定宽度为20px?
我有一个DataGridView绑定到DataTable(DataTable绑定到数据库).我需要一个补充DataRow到DataTable.我正在尝试使用以下代码:
dataGridViewPersons.BindingContext[table].EndCurrentEdit();
DataRow row = table.NewRow();
for (int i = 0; i < 28; i++)
{
row[i] = i.ToString();
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用,DataGridView从未添加过新的行.请告诉我,如何修复我的代码?
先感谢您.
<?xml version="1.0" encoding="utf-8"?>
<PHP_Adapter>
<Adapter>
<ID>11</ID>
<Provider>22</Provider>
<Connectstring>33</Connectstring>
</Adapter>
</PHP_Adapter>
Run Code Online (Sandbox Code Playgroud)
这个我的Xml文件有什么不对?
bool CheckAdapterExist(string aid)
{
DataTable dt = new DataTable();
dt.ReadXml(axml);
MessageBox.Show(dt.Rows[0]["ID"].ToString());
return true;
}
Run Code Online (Sandbox Code Playgroud) 我有DataTable.
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("id", Type.GetType("System.Int32")));
dt.Columns.Add(new DataColumn("name", Type.GetType("System.String")));
// more columns here
Run Code Online (Sandbox Code Playgroud)
我需要"id"值列表.
我可以在没有循环遍历DataTable中的所有行且没有Linq的情况下执行此操作吗?
编辑:
经过与Sergei的小讨论后,我决定使用循环.
Datatables可以选择每页显示的记录数.默认值从10,25,50和100开始.如何将其更改为从5而不是10开始?10条记录有点过多,在我目前的设计中占用了大量空间.感谢名单!
datatable ×10
c# ×7
datarow ×3
ado.net ×2
asp.net ×1
c#-2.0 ×1
collections ×1
css ×1
datagridview ×1
delete-row ×1
javascript ×1
jsf ×1
jsf-2 ×1
nullable ×1
primefaces ×1
sql-server ×1
types ×1
xml ×1