标签: datatable

C# - 使用DataTable填充组合框

我习惯使用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)

.net c# datatable combobox sharpdevelop

21
推荐指数
3
解决办法
21万
查看次数

DataTables与IEnumerable <T>

我正在与我合作的另一位程序员进行辩论.

对于数据库返回类型,是否有任何重要的内存使用或性能差异,或其他缺点应该使某人避免使用DataSet和DataTables并支持实现的类型IEnumerable<T>...反之亦然

我更喜欢返回实现IEnumerable<T>(List<T>, T[] etc)的类型,因为它更轻量级,在访问属性时强烈地键入对象,允许有关底层类型的更丰富信息等.当手动使用数据读取器时,它们确实需要更多时间来设置.

这几天使用DataTables的唯一理由就是懒惰吗?

c# datatable ienumerable list

21
推荐指数
4
解决办法
2万
查看次数

如何更改默认p:dataTable emptyMessage消息

我正在使用PrimeFaces的dataTable.我得到"没有找到记录." 当table没有元素时 我想将此消息更改为"无结果",并将此消息设为i18n类型.

我不想用

<p:dataTable 
    id="idTable" 
    ...
    emptyMessage="#{messages['general.message.EmptyList']}"
>
Run Code Online (Sandbox Code Playgroud)

对于每张桌子.

如何更改p:dataTable默认emptyMessage消息?

datatable jsf messages internationalization primefaces

21
推荐指数
1
解决办法
2万
查看次数

如何在两个DataTable之间获得差异

我有这两个数据表,我想得到它们之间的区别.这是一个例子:

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)

那么,错误在哪里?非常感谢你的所有答案.:)

c# linq datatable

21
推荐指数
2
解决办法
3万
查看次数

.NET DataTable跳过Load(DataReader)上的行

我正在尝试使用以下内容填充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语句会导致它为每行创建唯一标识符.
这只是一个理论,我没有什么可以支持它,但我所有的测试似乎都会导致相同的结果.

.net datatable datareader localreport

20
推荐指数
4
解决办法
9698
查看次数

如何在<h:dataTable>或<ui:repeat>中使用<h:selectBooleanCheckbox>来选择多个项目?

我有一个Facelets页面<h:dataTable>.在每一行都有一个<h:selectBooleanCheckbox>.如果选中该复选框,则应在bean中设置相应行后面的对象.

  1. 我该怎么做呢?
  2. 如何在支持bean中获取所选行或其数据?
  3. 或者这样做会更好<h:selectManyCheckbox>吗?

datatable jsf multipleselection uirepeat selectbooleancheckbox

20
推荐指数
1
解决办法
6万
查看次数

如何将新行添加到数据表vb.net中

我有一个带有文本框和添加按钮的表单.

  1. 用户可以在文本框中写下名称,然后单击"添加"按钮.它将保存在具有自动ID的数据表中.
  2. 之后,文本框将被清除,用户可以在文本框中写入另一个名称,然后单击按钮.
  3. 这应该添加到具有现有ID + 1的内存上的现有数据表.
  4. 在gridview上显示.(这只是为了显示目的确认它有效)

我有这样的数据表.

    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)

任何人都可以建议我怎么做?我理解我的代码是废话但不正确但我只需要放一些代码,这样你们就不需要为我工作了.

非常感谢.

vb.net datatable

20
推荐指数
2
解决办法
19万
查看次数

一次删除数据表的所有行的快速方法

我想删除数据表中的所有行.我使用这样的东西:

foreach (DataRow row in dt.Rows)
{
  row.Delete();
}
TableAdapter.Update(dt);
Run Code Online (Sandbox Code Playgroud)

它运作良好但如果我有很多行需要很多时间.有没有办法一次删除所有行?

c# datatable

20
推荐指数
4
解决办法
10万
查看次数

从OracleDataAdapter.Fill()填充DataTable时"指定的强制转换无效"

我似乎无法在谷歌(或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# oracle datatable casting decimal

20
推荐指数
2
解决办法
1万
查看次数

JSTL c:如果在JSF h:dataTable中不起作用

我试图在状态结束时<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 jsf jstl conditional-rendering

19
推荐指数
1
解决办法
3万
查看次数