我正在编写一个显示数据库查询的应用程序。有不同的表格,我希望能够使用单选按钮在它们之间进行选择。这目前工作正常,但现在我试图弄清楚如何根据将显示哪个表来格式化数据重复器(有不同数量的列,以不同的顺序等)我让标题成功格式化因为它只是基本的 HTML,但项目模板需要使用 asp 内联代码,我认为这是导致问题的原因。
代码隐藏的相关代码:
protected string showDataTableItemTemplate()
{
string itemTemplateText = string.Empty;
if (tableSelection == "parts")
{
itemTemplateText += "<td><%# DataBinder.Eval(Container,\"DataItem.PartNumber\") %></td>";
itemTemplateText += "<td><%# DataBinder.Eval(Container,\"DataItem.Description\") %></td>";
}
else if (tableSelection == "package")
{
itemTemplateText += "<td><%# DataBinder.Eval(Container,\"DataItem.PackageNumber\") %></td>";
itemTemplateText += "<td><%# DataBinder.Eval(Container,\"DataItem.Description\") %></td>";
}
else if (tableSelection == "product")
{
itemTemplateText += "<td><%# DataBinder.Eval(Container,\"DataItem.ProductNumber\") %></td>";
itemTemplateText += "<td><%# DataBinder.Eval(Container,\"DataItem.Description\") %></td>";
}
return itemTemplateText;
}
然后我只是在 aspx 中定义了这样的文字:
<asp:Literal runat="server" Text='<%#showDataTableItemTemplate() %>'></asp:Literal>
还有另一种方法可以做到这一点吗?
编辑:我现在有以下内容:
protected void DataRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
LiteralControl itemTemplateLiteral = new LiteralControl();
itemTemplateLiteral = (LiteralControl)FindControl("itemTemplate");
string itemTemplateText = string.Empty;
if (tableSelection == "parts")
{
itemTemplateText += "<td><%# DataBinder.Eval(Container,\"DataItem.PartNumber\") %></td>";
itemTemplateText += "<td><%# DataBinder.Eval(Container,\"DataItem.Description\") %></td>";
}
else if (tableSelection == "package")
{
itemTemplateText += "<td><%# DataBinder.Eval(Container,\"DataItem.PackageNumber\") %></td>";
itemTemplateText += "<td><%# DataBinder.Eval(Container,\"DataItem.Description\") %></td>";
}
else if (tableSelection == "product")
{
itemTemplateText += "<td><%# DataBinder.Eval(Container,\"DataItem.ProductNumber\") %></td>";
itemTemplateText += "<td><%# DataBinder.Eval(Container,\"DataItem.Description\") %></td>";
}
itemTemplateLiteral.Text = itemTemplateText;
}
编译器一直告诉我有一个对象引用未设置为对象的实例。错误。另外,我尝试设置 Text 属性是否正确?(这不是我试图通过使用这种方法来避免的吗?)