0

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

错误:

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

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>

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

谢谢茶

4

2 回答 2

3
  1. prunat=server是一个 html 元素,如果你想在服务器端访问它,你必须添加它
  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>
    

此外,在 C# 中,通过方括号而不是圆括号访问数组索引器。但我建议改用DataRow.Field扩展方法:

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

最后说明:你也拼错了InnerHtml。如果光标在某处 InnerHTML并且您按,Visual Studio 可以自动为您更正它Ctrl+Space

于 2012-10-10T12:15:04.047 回答
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();
于 2012-10-10T12:18:20.203 回答