首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >:使用多个DataRow

:使用多个DataRow
EN

Stack Overflow用户
提问于 2015-12-18 18:39:13
回答 2查看 119关注 0票数 0

如果我只有一个tableRow,那么我的代码就能工作,如下所示:

代码语言:javascript
复制
 DataRow tableRow = table.NewRow();
 tableRow["DisplayName"] = sqlReader["DisplayName"].ToString();
 table.Rows.Add(tableRow);

如果我添加了第二个,我的Repeater就不会显示任何内容,并且无法工作:

代码语言:javascript
复制
 DataRow tableRow = table.NewRow();
 tableRow["DisplayName"] = sqlReader["DisplayName"].ToString();
 tableRow["ColumnName"] = sqlReader["ColumnName"].ToString();
 table.Rows.Add(tableRow);

添加其中多个的正确代码是什么?

编辑:

我也尝试过,但没有成功:

代码语言:javascript
复制
 DataRow tableRow = table.NewRow();
 tableRow["DisplayName"] = sqlReader["DisplayName"].ToString();
 table.Rows.Add(tableRow);
 DataRow tableRow2 = table.NewRow();
 tableRow2["ColumnName"] = sqlReader["ColumnName"].ToString();
 table.Rows.Add(tableRow2);

这是我的存储过程代码:

代码语言:javascript
复制
SELECT DisplayName AS DisplayName
    FROM FormField
    WHERE EventId = @EventId AND 
    FormId = @FormId AND 
    Visible = 1
    UNION
    SELECT ColumnName AS ColumnName
    FROM FormField
    WHERE EventId = @EventId AND 
    FormId = @FormId AND 
    Visible = 1

编辑: C#

代码语言:javascript
复制
  DataTable table = new DataTable();
            table.Columns.Add("DisplayName", typeof(string));
            table.Columns.Add("ColumnName", typeof(string));

using (SqlConnection sqlConn2 = new SqlConnection(ConfigurationManager.ConnectionStrings["Events2"].ConnectionString))
                {
                    sqlConn2.Open();

                    using (SqlCommand sqlCmd2 = new SqlCommand())
                    {
                        sqlCmd2.Connection = sqlConn2;
                        sqlCmd2.CommandType = CommandType.StoredProcedure;
                        sqlCmd2.CommandText = "spGetFormFields";
                        sqlCmd2.Parameters.Add("@EventId", SqlDbType.NVarChar).Value = eventId;
                        sqlCmd2.Parameters.Add("@FormId", SqlDbType.NVarChar).Value = formId;
                        sqlCmd2.ExecuteNonQuery();
                        using (SqlDataReader sqlReader = sqlCmd2.ExecuteReader())
                        {
                            while (sqlReader.Read())
                            {
                                DataRow tableRow = table.NewRow();
                                tableRow["DisplayName"] = sqlReader["DisplayName"].ToString();
                                table.Rows.Add(tableRow);
                                DataRow tableRow2 = table.NewRow();
                                tableRow2["ColumnName"] = sqlReader["ColumnName"].ToString();
                                table.Rows.Add(tableRow2);
                            }
                            RepeaterForm.DataSource = table;
                            RepeaterForm.DataBind();
                        }

                        sqlConn2.Close();
                    }
                }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-18 19:08:19

就像这样。SqlDataAdapter可以自动填充数据表。如果需要,还可以进行插入、更新和删除,但不能如图所示:

代码语言:javascript
复制
using (SqlConnection sqlConn2 = new SqlConnection(ConfigurationManager.ConnectionStrings["Events2"].ConnectionString)) 
using (SqlCommand sqlCmd2 = new SqlCommand())
{
    sqlConn2.Open();
    sqlCmd2.Connection = sqlConn2;
    sqlCmd2.CommandType = CommandType.StoredProcedure;
    sqlCmd2.CommandText = "spGetFormFields";
    sqlCmd2.Parameters.Add("@EventId", SqlDbType.NVarChar).Value = eventId;
    sqlCmd2.Parameters.Add("@FormId", SqlDbType.NVarChar).Value = formId;

    using (SqlDataAdapter da = new SqlDataAdapter(sqlCmd2))
    {
        da.Fill(Table);
        RepeaterForm.DataSource = table;
        RepeaterForm.DataBind();
    }

    sqlConn2.Close();
}
票数 3
EN

Stack Overflow用户

发布于 2015-12-18 19:01:21

+1 to Crowcoders上面关于列名被搞砸的评论。

如果您确实想这样做,我建议您可以尝试将查询更改为

SELECT DisplayName AS DisplayName, ColumnName AS ColumnName FROM FormField WHERE EventId = @EventId AND FormId = @FormId AND Visible = 1

看看这是否给了你想要的结果。不过,我还是会按照@Crowcoder建议的方式去做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34361995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档