asp转发器项目模板 [英] asp repeater item templates

查看:62
本文介绍了asp转发器项目模板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



i有一个这样的asp页面:



Hi,
i have an asp page like this:

<ItemTemplate>
<tr>
<td>
<asp:Label ID="Label2" runat="server" Text='<%#Eval("cell")%>' />
</td>
<td>
<asp:Label ID="Label3" runat="server" Text='<%#Eval("group")%>' />
 </td>
<td>
<asp:Label ID="Label1" runat="server" Text='<%#Eval("nm")%>' />
</td>
<td>
<asp:CheckBox ID="CheckBox1" Text="" runat="server" />
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
<asp:Button Text="Change" runat="server" OnClick="ChangeItems"/>





包含asp:repeater和asp:button

i想要这样做,当用户点击按钮时,asp:repeater的内容改为此,例如:





that contains asp:repeater and asp:button
i want to do that, when user clicked on button, the content of asp:repeater, changed to this, for example:

<pre lang="HTML">
<ItemTemplate>
<tr>
<td>
<asp:Label ID="Label2" runat="server" Text='<%#Eval("new")%>' />
</td>
<td>
<asp:Label ID="Label3" runat="server" Text='<%#Eval("test")%>' />
 </td>
<td>
<asp:CheckBox ID="CheckBox1" Text="" runat="server" />
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
<asp:Button Text="Change" runat="server" OnClick="ChangeItems"/>
</pre>

推荐答案

您想在客户端或服务器端执行此操作吗?好。对于客户端,您可以使用javascript查看/隐藏。



例如:



do you want to do this work in client side or server side? ok. for client side you can visible/hidden with javascript.

like for example:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <script type="text/javascript">
        function ToggleRepeater(chkVal) {
            var tr1 = document.getElementById('trValue1');
            var tr2 = document.getElementById('trValue2');

            tr1.style.visibility = "hidden";
            tr2.style.visibility = "hidden";
            if (chkVal == 1) {

                tr2.style.visibility = "visible";
            }
            else {
                tr1.style.visibility = "visible";
            }

        }
    </script>
    <form id="form1" runat="server">
    <div>
        <asp:Repeater ID="rpter1" runat="server">
            <ItemTemplate>
                <table border="0" cellpadding="0" cellspacing="0">
                    <tr id="trValue1">
                        <td>
                            <asp:Label ID="Label2" runat="server" Text='<%#Eval("val1")%>' />
                        </td>
                        <td>
                            <asp:Label ID="Label3" runat="server" Text='<%#Eval("val2")%>' />
                        </td>
                        <td>
                            <asp:Label ID="Label1" runat="server" Text='<%#Eval("val3")%>' />
                        </td>
                        <td>
                            <asp:CheckBox ID="CheckBox1" Text="" runat="server" onclick="ToggleRepeater(1)" />
                        </td>
                    </tr>
                    <tr id="trValue2" style="visibility:hidden">
                        <td>
                            <asp:Label ID="Label4" runat="server" Text='<%#Eval("val4")%>' />
                        </td>
                        <td>
                            <asp:Label ID="Label5" runat="server" Text='<%#Eval("val5")%>' />
                        </td>
                        <td>
                            <asp:CheckBox ID="CheckBox2" Text="" runat="server"  onclick="ToggleRepeater(2)"/>
                        </td>
                    </tr>
                </table>
            </ItemTemplate>
        </asp:Repeater>
    </div>
    </form>
</body>
</html>







代码落后:






code behind:

protected void Page_Load(object sender, EventArgs e)
      {
          DataTable dt = new DataTable();
          dt.Columns.Add("val1", typeof(string));
          dt.Columns.Add("val2", typeof(string));
          dt.Columns.Add("val3", typeof(string));
          dt.Columns.Add("val4", typeof(string));
          dt.Columns.Add("val5", typeof(string));

          DataRow drNew = dt.NewRow();
          drNew["val1"] = "value 1";
          drNew["val2"] = "value 2";
          drNew["val3"] = "value 3";
          drNew["val4"] = "value 4";
          drNew["val5"] = "value 5";
          dt.Rows.Add(drNew);


          rpter1.DataSource = dt;
          rpter1.DataBind();
      }


但我认为这是一个坏主意,因为只有可见并禁用它不好去服务器端。

ok,然后我给你这个代码:



客户端:



but I think its a bad idea, because only for visible and disable its not good to go server side.
ok, then I am giving you this code:

client side:

<form id="form1" runat="server">
    <div>
        <asp:Repeater ID="rpter1" runat="server">
            <ItemTemplate>
            <% if (status == "first")
               { %>
                <table id="tbl1" runat="server"  border="0" cellpadding="0" cellspacing="0">
                    <tr>
                        <td>
                            <asp:Label ID="Label2" runat="server" Text='<%#Eval("val1")%>' />
                        </td>
                        <td>
                            <asp:Label ID="Label3" runat="server" Text='<%#Eval("val2")%>' />
                        </td>
                        <td>
                            <asp:Label ID="Label1" runat="server" Text='<%#Eval("val3")%>' />
                        </td>
                        <td>
                            <asp:CheckBox ID="CheckBox1" runat="server" Text="" AutoPostBack="true" Checked="false" OnCheckedChanged="CheckBox1_ToggleRepeater" />
                        </td>
                    </tr>

                </table>
                <%}
                    if (status == "second")
               { %>
                <table id="tbl2" runat="server" border="0" cellpadding="0" cellspacing="0">
                    <tr>
                        <td>
                            <asp:Label ID="Label4" runat="server" Text='<%#Eval("val4")%>' />
                        </td>
                        <td>
                            <asp:Label ID="Label5" runat="server" Text='<%#Eval("val5")%>' />
                        </td>
                        <td>
                            <asp:CheckBox ID="CheckBox2" Text="" runat="server"  AutoPostBack="true" Checked="false" OnCheckedChanged="CheckBox2_ToggleRepeater"/>
                        </td>
                    </tr>
                </table>
                <%} %>
            </ItemTemplate>
        </asp:Repeater>
    </div>
    </form>



server side:




server side:

public string status { get; set; }
        protected void Page_Load(object sender, EventArgs e)
        {
           this.status = "first";
           if (!IsPostBack)
           {
               DataTable dt = new DataTable();
               dt.Columns.Add("val1", typeof(string));
               dt.Columns.Add("val2", typeof(string));
               dt.Columns.Add("val3", typeof(string));
               dt.Columns.Add("val4", typeof(string));
               dt.Columns.Add("val5", typeof(string));

               DataRow drNew = dt.NewRow();
               drNew["val1"] = "value 1";
               drNew["val2"] = "value 2";
               drNew["val3"] = "value 3";
               drNew["val4"] = "value 4";
               drNew["val5"] = "value 5";
               dt.Rows.Add(drNew);


               rpter1.DataSource = dt;
               rpter1.DataBind();

           }

           
        }
        protected void CheckBox1_ToggleRepeater(object sender, EventArgs e)
        {
            CheckBox objChecked = (CheckBox)sender;
            if (objChecked.Checked == true)
            {
                this.status = "second";
                objChecked.Checked = false;
            }
        }
        protected void CheckBox2_ToggleRepeater(object sender, EventArgs e)
        {
            CheckBox objChecked = (CheckBox)sender;
            if (objChecked.Checked == true)
            {
                this.status = "first";
                objChecked.Checked = false;
            }
          
           
        } 


这篇关于asp转发器项目模板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆