我习惯使用Java,那里有大量的例子.由于各种原因,我不得不切换到C#并尝试在SharpDevelop中执行以下操作:
// Form has a menu containing a combobox added via SharpDevelop's GUI
// --- Variables
languages = new string[2];
languages[0] = "English";
languages[1] = "German";
DataSet myDataSet = new DataSet();
// --- Preparation
DataTable lTable = new DataTable("Lang");
DataColumn lName = new DataColumn("Language", typeof(string));
lTable.Columns.Add( lName );
for( int i=0; i<languages.Length; i++ ) {
DataRow lLang = lTable.NewRow();
lLang["Language"] = languages[i];
lTable.Rows.Add(lLang);
}
myDataSet.Tables.Add(lTable);
// --- Handling the combobox
mnuActionLanguage.ComboBox.DataSource = myDataSet.Tables["Lang"].DefaultView;
mnuActionLanguage.ComboBox.DisplayMember = "Language";
Run Code Online (Sandbox Code Playgroud)
人们会假设在下拉列表中看到一些值,但它是空的.请告诉我我做错了什么;(
编辑:mnuActionLanguage.ComboBox.DataBind()是我也在网上找到的,但它在我的情况下不起作用.
解
mnuActionLanguage.ComboBox.BindingContext …Run Code Online (Sandbox Code Playgroud) 我正在与我合作的另一位程序员进行辩论.
对于数据库返回类型,是否有任何重要的内存使用或性能差异,或其他缺点应该使某人避免使用DataSet和DataTables并支持实现的类型IEnumerable<T>...反之亦然
我更喜欢返回实现IEnumerable<T>(List<T>, T[] etc)的类型,因为它更轻量级,在访问属性时强烈地键入对象,允许有关底层类型的更丰富信息等.当手动使用数据读取器时,它们确实需要更多时间来设置.
这几天使用DataTables的唯一理由就是懒惰吗?
我正在使用PrimeFaces的dataTable.我得到"没有找到记录." 当table没有元素时 我想将此消息更改为"无结果",并将此消息设为i18n类型.
我不想用
<p:dataTable
id="idTable"
...
emptyMessage="#{messages['general.message.EmptyList']}"
>
Run Code Online (Sandbox Code Playgroud)
对于每张桌子.
如何更改p:dataTable默认emptyMessage消息?
我有这两个数据表,我想得到它们之间的区别.这是一个例子:
Table1
-------------------------
ID | Name
--------------------------
1 | A
2 | B
3 | C
--------------------------
Table2
-------------------------
ID | Name
--------------------------
1 | A
2 | B
--------------------------
Run Code Online (Sandbox Code Playgroud)
我只想将结果作为table1中的数据而不是table2中的数据(table1-table2)
ResultTable
-------------------------
ID | Name
--------------------------
3 | C
--------------------------
Run Code Online (Sandbox Code Playgroud)
我尝试通过Linq使用这两个类似的解决方案,但它总是返回table1而不是table1-table2.这是第一个解决方案:
DataTable table1= ds.Tables["table1"];
DataTable table2= ds.Tables["table2"];
var diff= table1.AsEnumerable().Except(table2.AsEnumerable(),DataRowComparer.Default);
Run Code Online (Sandbox Code Playgroud)
二解决方案:
var dtOne = table1.AsEnumerable();
var dtTwo = table2.AsEnumerable();
var difference = dtOne.Except(dtTwo);
Run Code Online (Sandbox Code Playgroud)
那么,错误在哪里?非常感谢你的所有答案.:)
我正在尝试使用以下内容填充DataTable,以构建LocalReport:
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = new MySqlConnection(Properties.Settings.Default.dbConnectionString);
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT ... LEFT JOIN ... WHERE ..."; /* query snipped */
// prepare data
dataTable.Clear();
cn.Open();
// fill datatable
dt.Load(cmd.ExecuteReader());
// fill report
rds = new ReportDataSource("InvoicesDataSet_InvoiceTable",dt);
reportViewerLocal.LocalReport.DataSources.Clear();
reportViewerLocal.LocalReport.DataSources.Add(rds);
Run Code Online (Sandbox Code Playgroud)
有一次,我注意到报告不完整,缺少一条记录.我已经改变了一些条件,以便查询将返回两行并且... 惊讶:报告只显示一行而不是两行.我试图调试它以找出问题所在,我陷入了困境
dt.Load(cmd.ExecuteReader());
Run Code Online (Sandbox Code Playgroud)
当我注意到它DataReader包含两个记录但DataTable只包含一个.不小心,我ORDER BY在查询中添加了一个子句,并注意到这次报告正确显示.
显然,DataReader包含两行,但是如果SQL查询字符串包含一行,则DataTable只读取它们ORDER BY(否则它只读取最后一行).任何人都可以解释为什么会发生这种情况以及如何解决这个问题?
编辑:
当我第一次发布问题时,我说它正在跳过第一行; 后来我意识到它实际上只读了最后一行并且我相应地编辑了文本(当时所有的记录都被分成两行,当它实际上只显示最后一行时它似乎跳过了第一行).这可能是因为它没有唯一的标识符来区分MySQL返回的行,因此添加ORDER BY语句会导致它为每行创建唯一标识符.
这只是一个理论,我没有什么可以支持它,但我所有的测试似乎都会导致相同的结果.
我有一个Facelets页面<h:dataTable>.在每一行都有一个<h:selectBooleanCheckbox>.如果选中该复选框,则应在bean中设置相应行后面的对象.
<h:selectManyCheckbox>吗?datatable jsf multipleselection uirepeat selectbooleancheckbox
我有一个带有文本框和添加按钮的表单.
我有这样的数据表.
Button1.click() event
Dim name = txtname.Text
Dim dt As New DataTable
dt.Columns.Add("ID", GetType(Integer))
dt.Columns.Add("Name", GetType(String))
Dim N As Integer = dt.Columns("ID").AutoIncrement
dt.Rows.Add(N, name)
GridView1.DataSource = dt
GridView1.DataBind()
txtname.Text = ""
Run Code Online (Sandbox Code Playgroud)
目前我有点像上面的代码.在真正的程序中,它不仅仅是名称,它不仅仅是一个数据表,所以我只是模拟了一些代码.
这个代码为aspx.
<asp:TextBox ID="txtname" runat="server">
</asp:TextBox><asp:Button ID="Button1" runat="server" Text="Button" />
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议我怎么做?我理解我的代码是废话但不正确但我只需要放一些代码,这样你们就不需要为我工作了.
非常感谢.
我想删除数据表中的所有行.我使用这样的东西:
foreach (DataRow row in dt.Rows)
{
row.Delete();
}
TableAdapter.Update(dt);
Run Code Online (Sandbox Code Playgroud)
它运作良好但如果我有很多行需要很多时间.有没有办法一次删除所有行?
我似乎无法在谷歌(或StackOverflow)的任何地方找到这个问题,这真的让我感到惊讶,所以我把它放在这里以帮助处于同样情况的其他人.
我有一个SQL查询在Oracle Sql Developer上运行正常,但是当我通过C#使用它adapter.Fill(table)来获取结果时,我得到Specified cast is not valid错误(System.InvalidCastException).
这是C#代码的简化版本:
var resultsTable = new DataTable();
using (var adapter = new OracleDataAdapter(cmd))
{
var rows = adapter.Fill(resultsTable); // exception thrown here, but sql runs fine on Sql Dev
return resultsTable;
}
Run Code Online (Sandbox Code Playgroud)
这是SQL的简化版本:
SELECT acct_no, market_value/mv_total
FROM myTable
WHERE NVL(market_value, 0) != 0
AND NVL(mv_total, 0) != 0
Run Code Online (Sandbox Code Playgroud)
如果我删除了除法条款,它就不会出错 - 所以它是特定的.但是,market_value和mv_totalNumber都是Number(19,4)类型,我可以看到Oracle适配器需要一个小数,所以正在进行什么演员?为什么它适用于SqlDev但不适用于C#?
我试图在状态结束时<c:if>有条件地放入一个<h:outputLink>内部<h:dataTable>.
<h:dataTable value="#{bean.items}" var="item" width="80%">
<h:column>
<f:facet name="header">
<h:outputText value="State" />
</f:facet>
<c:if test="#{item.state != 'Finish'}">
<h:outputText value="Missing value" />
</c:if>
<c:if test="#{item.state == 'Finish'}">
<h:outputLink value="myLink">
<h:outputText value="Value = #{item.state}" />
</h:outputLink>
</c:if>
</h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)
但这不起作用,为什么会这样,我该如何解决?
datatable ×10
c# ×5
jsf ×3
.net ×2
casting ×1
combobox ×1
datareader ×1
decimal ×1
ienumerable ×1
jstl ×1
linq ×1
list ×1
localreport ×1
messages ×1
oracle ×1
primefaces ×1
sharpdevelop ×1
uirepeat ×1
vb.net ×1