0

DataTable から Web ページに項目を読み込もうとしていますが、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>

私のコードを機能させる方法についてのアイデア、

ありがとうお茶

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# では、arry インデクサーは、括弧ではなく角括弧を介してアクセスされます。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 に答える