0

テキスト ファイルの内容を表に表示しようとしています。テキストファイルを正常に読み取り、.txtファイルの内容をdivに表示することはできましたが、内容をテーブルに表示しようとするとエラーがスローされます。

私は何か間違ったことをしていますか?

これが私のコードビハインドです:

protected void btnUpld_Click(object sender, EventArgs e)
{
    Stream theStream = file1.PostedFile.InputStream; 
    //file1 is an asp:FileUpload on .aspx

    using (StreamReader viewer = new 
           StreamReader((Stream)file1.PostedFile.InputStream))
    {
        while (viewer.Peek() > 0)
        {
            string txtskip = viewer.ReadLine();
            Table1.InnerHtml += txtskip; 
            //Table1 is the table i'm wanting to put the results in on my .aspx
         }
    }
}
4

4 に答える 4

2

Innerhtmlテーブル コントロールのようなプロパティはありません。テーブルの行の列にテキストを割り当てる必要があります。

あなたのコードは次のようになります

<asp:Table ID="Table2" runat="server">
    <asp:TableRow ID="TableRow1" runat="server">
        <asp:TableCell ID="TableCell1" runat="server">
        This is Cell 1
        </asp:TableCell>
        <asp:TableCell ID="TableCell2" runat="server">
        This is Cell 2
        </asp:TableCell>
    </asp:TableRow>
</asp:Table>

サーバー側で書くことができます

TableCell1.Text=somestring;
TableCell2.Text=anotherstring;
于 2012-05-11T16:45:11.450 に答える
1

このコードはあなたを助けるはずです

 protected void btnRender_Click(object sender, EventArgs e)
{
    using (StreamReader viewer = new StreamReader((Stream)file1.PostedFile.InputStream))
    {
        TableRow tr;
        TableCell tc;
        while (viewer.Peek() > 0)
        {
            string txtskip = viewer.ReadLine();
            //   Table1.InnerHtml += txtskip; //Table1 is the table i'm wanting to put the results in on my .aspx
            tr = new TableRow();
            tc = new TableCell();
            tr.Cells.Add(tc);
            Table1.Rows.Add(tr);
            tc.Text = txtskip;
        }
    }
}

ありがとう、

エセン

于 2012-05-11T18:00:46.767 に答える
0

そのようなコンテンツをロードするためにテキストファイルを使用するべきではありません。遅かれ早かれそのファイルへのアクセスがロックされるため、問題が発生する可能性があります。Cacheコンテンツをにロードし、そこからロードすることで、このリスクを打ち消すことができます。

上記のアドバイスに従って、以下の例を変更してからテキストを取得しますがCache、わかりやすくするために、最初の質問に答えるために、この例ではファイルから直接テキストをロードします。

using (var reader = new StreamReader("bla.txt"))
{
    //use the object initializer to prepare a new literal control
    var litCtrl = new Literal 
    { 
        Mode = LiteralMode.PassThrough, 
        Text = string.Format("<table>{0}</table>", reader.ReadToEnd()))
    }

    //use a literal control to display the table on the page
    pnlContainer.Controls.Add(litCtrl);
}
于 2012-05-11T16:56:44.500 に答える
0

このようなことができます。

データを入力する必要がある場所内にLiteralControlを配置できます。tdそれで

while (viewer.Peek() > 0)
                {
                    string txtskip = viewer.ReadLine();
                    yourLiteral.text += txtskip; 
                }
于 2012-05-11T16:38:29.503 に答える