0

如何将转发器与 2 个存储过程绑定,两个存储过程相差 1 列,1 的输出是 ABCD,第二个是 EBCD。

更新

<asp:Repeater ....>
    <HeaderTemplate>
        [table rows and columns structure]
    </HeaderTemplate>
    <ItemTemplate>
        [table rows and columns structure]
    </ItemTemplate>
</asp:Repeater>
  1. a 和 E 的数据类型都是字符串。
  2. 我通过databind()将它绑定到db。
  3. 我的标记看起来像:

感谢您的回复

4

1 回答 1

0
  1. A 列和 E 列的数据类型是什么?
  2. 你怎么绑定?数据源ID?数据源/数据绑定()?
  3. 你的转发器中有什么标记?

在表示层(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();
}
于 2012-09-22T12:56:08.203 回答