- A 列和 E 列的数据类型是什么?
- 你怎么绑定?数据源ID?数据源/数据绑定()?
- 你的转发器中有什么标记?
在表示层(aspx 页面),它只是字符串,因此您可以将转发器绑定到任一结果,因为它们都有 4 列。
很难提供更多帮助,因为您还没有展示您已经拥有的东西,而最佳解决方案很大程度上取决于您项目的具体情况。
编辑
好吧,那就绑定吧,你还没试过吗?当您问技术问题时,如果您没有先尝试过,您会发现,我们不太可能放弃我们的空闲时间来提供帮助。
一个更好的问题应该是:“我已经尝试将我的转发器绑定到 2 个不同的存储过程,它们仅相差一列,但我收到一个错误(描述确切的错误消息)。这是我的代码......谁能帮忙?”
可能的解决方案
aspx
<asp:Repeater ID="repeaterId" runat="server"
OnItemDataBound="RepeaterId_ItemDataBound">
<HeaderTemplate>
[table rows and columns structure]
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><asp:Literal ID="literalId" runat="server"></td>
<td><% # eval("column2")%></td>
<td><% # eval("column3")%></td>
<td><% # eval("column4")%></td>
</tr>
</ItemTemplate>
aspx.cs
protected void RepeaterId_ItemDataBound(Object Sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Literal lit = e.FindControl("literalId") as Literal;
if(null != lit)
{
if(usingStoredProcedure1)
{
lit.Text = Databinder.Eval(e.Item.DataItem, "A");
}
else
{
lit.Text = Databinder.Eval(e.Item.DataItem, "E");
}
}
}
}
private void BindRepeater()
{
if(someCondition == true)
{
repeaterId.DataSource = getStoredProcedure1();
}
else
{
repeaterId.DataSource = getStoredProcedure2();
}
repeaterId.DataBind();
}