私がする必要があるのは、ユーザーがドロップダウンリストから値を選択すると、グリッドビューの行内に動的ラベルと動的ドロップダウンリストが生成されることです。ラベルの数は DDL の数と同じであり、これらの数はユーザーの選択によって異なります。ラベルの表示には成功しましたが、DDL の表示には成功しませんでした。
ASPX:
<div id="dvCoverages" class="TD">
<asp:Literal ID="litCoverages" Text="Coverages" runat="server" /></div>
<div class="MAD">
<asp:GridView ID="gvCoverages" runat="server" AllowSorting="True" AutoGenerateColumns="False"
GridLines="None">
<Columns>
<asp:BoundField DataField="LeftLabel"></asp:BoundField>
<asp:TemplateField></asp:TemplateField>
<asp:BoundField DataField="RightLabel"></asp:BoundField>
<asp:TemplateField></asp:TemplateField>
</Columns>
</asp:GridView>
</div>
C#:
public void SetCoveragesDDL(EndososWS.CoveragesInfo[] objCoveragesInfo)
{
DataTable dt = new DataTable();
dt.Columns.Add("LeftLabel");
dt.Columns.Add(new DataColumn("LeftDDL", typeof(string)));
dt.Columns.Add("RightLabel");
dt.Columns.Add(new DataColumn("RightDDL", typeof(string)));
List<Label> labels = new List<Label>();
List<DropDownList> DDLs = new List<DropDownList>();
int numberOfCoverages = objCoveragesInfo.Length;
if (numberOfCoverages != 0)
{
for (int i = 1; i <= numberOfCoverages; i++)
{
DataRow dr = dt.NewRow();
var tempLabel = new Label();
var tempDDL = new DropDownList();
tempLabel.ID = "label" + i;
tempLabel.Text = objCoveragesInfo[i - 1].CoverageName;
tempDDL.ID = "textBox" + i;
tempDDL.Attributes.Add(">> Select <<", "");
if (i % 2 == 0)
{
dr["RightLabel"] = tempLabel.Text + ": ";
labels.Add(tempLabel);
DDLs.Add(tempDDL);
}
else
{
dr["LeftLabel"] = tempLabel.Text + ": " + tempDDL.SelectedIndex;
dr["LeftDDL"] = tempDDL;
labels.Add(tempLabel);
DDLs.Add(tempDDL);
if (i + 1 <= numberOfCoverages)
{
i++;
tempLabel.ID = "label" + i;
tempLabel.Text = objCoveragesInfo[i - 1].CoverageName;
tempDDL.ID = "textBox" + i;
tempDDL.Attributes.Add(">> Select <<", "");
dr["RightLabel"] = tempLabel.Text + ": ";
labels.Add(tempLabel);
DDLs.Add(tempDDL);
}
}
dt.Rows.Add(dr);
}
gvCoverages.DataSource = dt;
gvCoverages.DataBind();
}
}