我正在尝试将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>
任何想法如何使我的代码工作,
由于 茶
答案 0 :(得分:3)
p
是一个html元素,如果要在服务器端访问它,则必须添加runat=server
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#中,通过方括号而不是括号访问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();