C#.net repeater 动态绑定模板的问题。Literal等等相关内容!

整个模板全部是由自定义类输出的,方式是继承ITemplate接口然后实现其InstantiateIn方法来创建内容。由于InstantiateIn中的Control只能添... 整个模板全部是由自定义类输出的,方式是继承ITemplate接口然后实现其InstantiateIn方法来创建内容。由于InstantiateIn中的Control 只能添加控件,所以全部内容放到创建的Literal中然后再用container绑定展示出来。
问题是因为调用了几个方法和事件,所有内容都作为一个整体放到了Literal中,repeater中又需要添加服务器控件来做删除修改等操作,Literal中又不能绑定服务器控件所以不知道具体该怎么办。 因为百度提问的字数有限制所有代码不能尽数贴出来。
非常感谢你们的回答,可惜都没有看懂我提的问题, 不过也不能怪大家,一是没有代码,二是这个方式本来你们可能接触的也比较少。 最后用__doPostBack方法解决了,呵呵。很好,很成功!
展开
 我来答
netc1989
2011-03-15
知道答主
回答量:16
采纳率:0%
帮助的人:0
展开全部

请问你的意思是不是在repeater里面一添加服务器控件就提示错误?如果是这个原因的话,建议你在repeater里面用html控件好了。

<asp:Repeater ID="Repeater1" runat="server" >

                <HeaderTemplate>

                    <table align="center" cellpadding="2" cellspacing="1" width="99%" class="border">

                    <tr class="title">

                        <th width="5%">

                            ID

                        </th>

                        <th width="35%">

                            栏目连接(url)

                        </th>

                        <th width="20%">

                            栏目名称(name)

                        </th>

                        <th width="20%">

                            所属模块

                        </th>

                        <th align="center">

                            操作

                        </th>

                    </tr>    

                </HeaderTemplate>

                <ItemTemplate>

                    <tr id="di" class="tdMoveTr" onmouseover="this.className='tdMoveTrBg'" onmouseout="this.className='tdMoveTr'">

                                <td align="left">

                                    <%# DataBinder.Eval(Container.DataItem,"Id") %>

                                </td>

                                <td align="left">

                                    <%# DataBinder.Eval(Container.DataItem,"Url") %>

                                </td>

                                <td align="left">

                                    <%# DataBinder.Eval(Container.DataItem,"UrlName") %>

                                </td>

                                <td align="left">

                                    <img src="../../Images/folder.gif" /><%# DataBinder.Eval(Container.DataItem,"Comment") %>

                                </td>

                                <td align="center">

                                    <a href="XTGL_edit.aspx?Id=<%# DataBinder.Eval(Container.DataItem,"Id") %>">修改</a>┊

                                    <input type="checkbox" runat="server" id="checkbox" name="checkbox" value=<%# DataBinder.Eval(Container.DataItem,"Id") %>   />

                                    

                                </td>

                            </tr>

                </ItemTemplate>

                <FooterTemplate>

                    </table>

                </FooterTemplate>

            </asp:Repeater>

点击修改,直接跳转页面,进入修改页面,至于删除代码如下:

int k = 0;

        for (int i = 0; i < Repeater1.Items.Count; i++)

        {

            System.Web.UI.HtmlControls.HtmlInputCheckBox sb = (System.Web.UI.HtmlControls.HtmlInputCheckBox)Repeater1.Items[i].FindControl("checkbox");

            if (sb.Checked)

            {

                jiaoxue.DeleteItem(sb.Value);

                k++;

            }

        }

        if (k == 0)

        {

            msg.ShowMsg("请选择要删除的记录!", this);

        }

这样就可以用html控件解决这个问题了,希望这是你要的答案!

追问
我就是想把删除做成服务器控件呢。要是跳到另一个页面去我就不来问咯。 另外你这个方式是把内容都写在 中然后再循环出来的。 我的方式是把 
等等 内容全部生产html然后放进Literal,再把Literal放进controls的。动态加载的ItemTemplate 这些模板。
遒劲还谦和的小东青O
2011-03-16 · 超过29用户采纳过TA的回答
知道答主
回答量:247
采纳率:25%
帮助的人:46.5万
展开全部
<asp:Repeater ID="Repeater1" runat="server" onitemcommand="Repeater1_ItemCommand">
<HeaderTemplate>
<table id="category" cellpadding="0" cellspacing="0" align="center">
<tr>
<td>类型</td>
<td>编辑</td>
<td>删除</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("CategoryName")%></td>
<td><asp:LinkButton ID="LinkButton1" CommandName="update" CommandArgument='<%#Eval("CategoryId")%>' runat="server">编辑</asp:LinkButton></td>
<td><asp:LinkButton ID="LinkButton2" CommandName="del" CommandArgument='<%#Eval("CategoryId")%>' runat="server">删除</asp:LinkButton></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
添加repeater事件
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "update") //更新
{

}
else if (e.CommandName == "del") //删除
{
CategoryManager.DelCategory(Convert.ToInt32(e.CommandArgument));
Response.Redirect("~/Admin/AddCategory.aspx");
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-03-15
展开全部
这个很容易的,百度多的是
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-03-15
展开全部
a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式