1

私はこれに数時間苦労しており、オンラインで答えを見つけることができないようです. 私がオンラインで見つけたいくつかのプラクティスは仕事をしていないので、何か間違っていると思います.

Table オブジェクトを作成し、いくつかの TableRow オブジェクトを配置し、その下に TableCell を配置しました。このテーブルの 1 つの列は、私が作成した TextBox オブジェクトで構成されています。

Table productTable = new Table();
int j = 0;
foreach (Product i in prodList)
        {
            TextBox qttyTB = new TextBox();
            qttyTB.ID = "Quantity" + Convert.ToString(j);
            qttyTB.Style["width"] = "30px";
            qttyTB.Text = "0";
            TableRow tableR = new TableRow();
            TableCell tableC1 = new TableCell();
            tableC1.Text = "<img src='" + i.ImagePath + "' class='ProductImage'/>";
            tableR.Controls.Add(tableC1);
            TableCell tableC2 = new TableCell();
            tableC2.Text = i.Name + "&nbsp;&nbsp;&nbsp;&nbsp;";
            tableR.Controls.Add(tableC2);
            TableCell tableC3 = new TableCell();
            tableC3.Text = i.Price + "&nbsp;&#8362;&nbsp;&nbsp;&nbsp;&nbsp;";
            tableR.Controls.Add(tableC3);
            TableCell tableC4 = new TableCell();
            tableC4.Controls.Add(tbArray[j - 1]);
            tableR.Controls.Add(tableC4);
            productTable.Controls.Add(tableR);
            j++;
        }
TablePH.Controls.Add(productTable);

ページ出力は 100% 機能します。ここで、ボタンをクリックすると、作成した TextBox オブジェクトの値を保持しようとしています。いくつかのことを試しました。

4

1 に答える 1

0

CodeBehind でテーブルにデータを入力することは一般的に悪い習慣であり、ビューとビジネス ロジックの問題を分離しているため、避ける必要があります。

データベースから製品を取得する場合は、.aspx ファイルに次のようなものを配置します。SQL でない場合は、グーグルで検索できる他の DataSources があります。

 <asp:SqlDataSource ID="SelectItemsDataSource" runat="server" 
    ConnectionString="<%$ ConnectionStrings:hubConnectionString %>" 
    ProviderName="<%$ ConnectionStrings:hubConnectionString.ProviderName %>" 

        SelectCommand="SELECT itemEntity.id, itemEntity.name, itemEntity.filename, itemEntity.type, itemEntity.added, userEntity.name FROM item AS itemEntity 
                        LEFT OUTER JOIN USER AS userEntity ON itemEntity.uploader = userEntity.id WHERE itemEntity.type like @type ORDER BY itemEntity.added DESC" 
        OnSelecting="onItemSelecting"> 
        <SelectParameters>
           <asp:Parameter Name="@type" Type="String" />
        </SelectParameters>       
</asp:SqlDataSource>

次に、テーブルを定義する場所に、必要に応じてさまざまなタイプのフィールドを追加します。注: <%# x %> で囲まれた属性値は、分離コードで関数を呼び出しています。

<asp:GridView ID="ItemGrid" runat="server" DataSourceID="SelectItemsDataSource" class="itemGrid"
    AutoGenerateColumns="False" AllowPaging="True" AllowSorting="True" 
    CellPadding="4" ForeColor="#333333" GridLines="None">
    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
    <Columns>
        <asp:TemplateField HeaderText="File type">
            <ItemTemplate>
                <asp:Image runat="server" ID="mediaImage"
                    ImageUrl='<%# GetImageUrl(Eval("type") as string) %>' />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Preview">
            <ItemTemplate>
                <a runat="server" id="mediaPreview" href='<%# GetPreviewUrl(Eval("id").ToString()) %>'>Play</a>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:HyperLinkField DataTextField="name" DataNavigateUrlFields="id" DataNavigateUrlFormatString="Download.aspx?FileID={0}" HeaderText="Name"/>            
        <asp:BoundField HeaderText="Uploaded date" 
            DataField="added" DataFormatString="{0:d MMMM, yyyy}" SortExpression="added">
        </asp:BoundField>
        <asp:BoundField HeaderText="Uploaded by" 
            DataField="name1" SortExpression="name1">
        </asp:BoundField>
    </Columns>
</asp:GridView>
于 2012-12-09T18:07:55.190 に答える