0

次の機能を匿名で実行したいと考えています。どうすればいいですか -

            TableRow tr = new TableRow();
            TableCell tc = new TableCell();
            Label lbl = new Label();
            lbl.Text = link;
            tc.Controls.Add(lbl);
            tr.Cells.Add(tc);
            tblMain.Rows.Add(tr);

アップデート

私たちがするように -

tblMain.Rows.Add(new TableRow(/* Here I will add a TableCell */))
4

3 に答える 3

1

あなたが望むことを行う匿名の方法はありません。

最も近いのは、質問で触れたクラス初期化子です。

tblMain.Rows.Add(new TableRow() { Property = "SomeValue" })

クラス初期化子でできることは{ }、上記の行に表示されていることです。したがって、より少ないコード行でコントロールを追加できますが、実際には何も得られませんが、好みの問題です。

編集:

これを 1 行のコードで行うというコメントに応えて、ここで止めさせてください。ここでは全体像を見る必要があります。コードの 1 行が別の開発者にとってどの程度理解しやすいと思いますか?

デバッグについても考えてください。コードをステップ実行していて、コントロールの 1 つに問題がある場合、変数名の上にマウスを移動できると、はるかに簡単で便利です。即時/ローカルウィンドウを介してプロパティを掘り下げます。

私を信じてください、私は以前にそのようなコードを扱ったことがあり、最終的な結果は、責任のある開発者を見つけて、170Cに設定されたGeorge Foremanグリルに手を置きたいということでした.

あなたがこのコードを見る唯一の開発者であれば、それで十分です。ただし、私が見る限り、このコードをワンライナーにリファクタリングする方法はありません。

于 2013-01-15T09:44:30.060 に答える
0
//Declare a new table and add it as child of tdparent
        Table table1 = new Table();
        table1.ID = "tablename";
        table1.Style.Add(HtmlTextWriterStyle.Width, "auto");
        tdparent.Controls.Add(table1);


        //Decalre a new table row and add it as child of tableskills
        TableRow tr1 = new TableRow();
        tr1.ID = "tr1Skills";
        table1.Controls.Add(tr1);

        CompanyBAL objBAL = new CompanyBAL();

        int id;


        if (ddlFunctional.SelectedValue == "All")
        {
            id = -99;
        }
        else
        {
            id = Convert.ToInt32(ddlFunctional.SelectedValue.ToString());
        }

        DataSet ds = objBAL.GetSkillSets(id);

        for (int i = 0; i < ds.Tables[1].Rows.Count; i++)
        {
            TableCell td = new TableCell();


            td.ID = "td" + ds.Tables[1].Rows[i]["skilltype"].ToString();
            td.Style.Add(HtmlTextWriterStyle.VerticalAlign, "top");
            td.Style.Add(HtmlTextWriterStyle.Width, "auto");


            tr1.Controls.Add(td);


            // add CheckBoxList to tabelCell
            CheckBoxList cbl = new CheckBoxList();


            cbl.ID = "cbl" + ds.Tables[1].Rows[i]["skilltype"].ToString();
            cbl.Style.Add(HtmlTextWriterStyle.Width, "auto");


            td.Controls.Add(cbl);
        }

        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            TableCell tbCell = ((TableCell)tr1.FindControl("td" + ds.Tables[0].Rows[i]["skilltype"].ToString()));

            CheckBoxList cb= ((CheckBoxList)tbCell.FindControl("cbl" + ds.Tables[0].Rows[i]["skilltype"].ToString()));

            cb.Items.Add(new ListItem(ds.Tables[0].Rows[i]["skillname"].ToString(), ds.Tables[0].Rows[i]["skillname"].ToString()));

        }

テーブル コントロールとテーブル内のコントロールを追加できます

于 2013-01-15T09:54:04.970 に答える
0

自律的に意味すると仮定すると、1 つのテーブル行を作成できるため、コードは機能します。多数作成するには、for ループを使用します。

int iterationTimes = 10;

for (int i = 1; i <= iterationTimes ; i++)
{
    TableRow tr = new TableRow();
    TableCell tc = new TableCell();
    Label lbl = new Label();
    lbl.Text = link;
    tc.Controls.Add(lbl);
    tr.Cells.Add(tc);
    tblMain.Rows.Add(tr);
}
于 2013-01-15T09:51:41.150 に答える