我需要做的是,当用户从下拉列表中选择一个值时,它将在gridview的行内生成动态标签和动态下拉列表。标签数量与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();
}
}
答案 0 :(得分:0)
尝试做这样的事情
tempDDL.Insert(0, new ListItem(">> Select <<", string.Empty));
而不是
tempDDL.Attributes.Add(">> Select <<", "");