尝试将DataTable中的项目读入网页

时间:2012-10-10 12:09:44

标签: asp.net

我正在尝试将DataTable中的项目读入网页,但在C#代码中遇到2个错误:p1.InnerHTML = dt.rows(0).Item(0);

错误:

p1在当前内容中不存在。 System.Data.Datatable不包含'rows'的定义,也没有扩展方法'rows'接受第一个参数..

C#

protected void Page_Load(object sender, EventArgs e)
{
    DataTable dt = new DataTable();
    string strConnection = ConfigurationManager.ConnectionStrings["ChinatowndbConnString"].ConnectionString;
    SqlConnection conn = new SqlConnection(strConnection);
    string sql = "SELECT pagetext FROM Content where pagetag = 1";
    SqlCommand cmd = new SqlCommand(sql);
    cmd.CommandType = CommandType.Text;
    cmd.Connection = conn;
    SqlDataAdapter sd = new SqlDataAdapter(cmd);
    sd.Fill(dt);

    p1.InnerHTML = dt.rows(0).Item(0);
    p2.InnerHTML = dt.rows(1).Item(0);
    p3.InnerHTML = dt.rows(2).Item(0);
}

HTML:

<p id="p1" class="none"></p>
<p id="p2" class="none"></p>
<p id="p3" class="none"></p>

任何想法如何使我的代码工作,

由于 茶

2 个答案:

答案 0 :(得分:3)

  1. p是一个html元素,如果要在服务器端访问它,则必须添加runat=server
  2. C#区分大小写,并且该属性名为Rows,而不是rows

    <p id="p1" runat="server" class="none"></p>
    <p id="p2" runat="server" class="none"></p>
    <p id="p3" runat="server" class="none"></p>
    
  3. 此外,在C#中,通过方括号而不是括号访问arry索引器。但我建议改为使用DataRow.Field扩展方法:

    p1.InnerHtml = dt.Rows[0].Field<String>(0); // first field of first row, assuming that it's a string
    

    最后说明:你也拼错了InnerHtml。如果光标位于InnerHTML中的某个位置并按 Ctrl + Space ,Visual Studio可以自动为您更正。

答案 1 :(得分:0)

您需要为每个服务器端添加runat =“server”以便在服务器端访问。

<p id="p1" class="none" runat="server"></p>
<p id="p2" class="none" runat="server"></p>
<p id="p3" class="none" runat="server"></p>

以及分配使用时

dt.Rows[0][0].ToString();
dt.Rows[1][0].ToString();
dt.Rows[2][0].ToString();