ACCESS赢得Repeater控件里动态声称的控件的值

每每上CSDN社区论坛的恋人应该掌握在CSDN里面结贴的时候会让您给各种回帖的人必然的分值作为报酬。此时大家无法固定TextBox框的个数,因为回帖的人头是不定点的。而且只要将TextBox控件和单纯的回执人提到则会造成后台代码冗余,也不便利珍贵和扩展吗,显得不灵活不出示。

QQ空间的留言本里面也是相仿的气象。当有人给我们留言的时候大家要恢复生机那些留言就点击“回复”就会出现三个TextBox框出来,然后大家填好团结的留言点击“提交”系统就活动提交了大家的留言。一般对那种重新的数额读取大家日常是用Repeater控件来做,而且也能比较灵敏得分页,更爱慕的是它亦可形成动态变化控件。

上边大家就来兑现类似QQ留言和死灰复燃留言的功力。

<asp:Repeater ID=”Rep”
runat=”server”>

               
<ItemTemplate>

                    <table
border=”1″ width=”100%” cellpadding=”0″
cellspacing=”0″>

                       
<tr>

                            <td id=”Right_img”
width=”25%” align=”center” valign=”top” rowspan=”3″>

                                <br
/>

                               
<%# “<img src=” + “../image/head/” +
DataBinder.Eval(Container.DataItem,”HeadImage”) + “.gif” + “>”
%>

                                <br
/>

                                <br
/>

                                <br
/>

                               
<%# DataBinder.Eval(Container.DataItem, “Name”)
%>

                                <br
/>

                                <%#
DataBinder.Eval(Container.DataItem, “GuessDate”) %>

                           
</td>

                            <td
id=”Right_Top” height=”22″ align=”center”>

                               
留言题目:<%#
DataBinder.Eval(Container.DataItem, “Title”) %>

                           
</td>

                       
</tr>

                       
<tr>

                            <td
valign=”top” align=”left”
style=”padding-top:15px;padding-bottom:25px;padding-left:2px;”>

                                <br />

                               
<%# DataBinder.Eval(Container.DataItem, “Content”) %> 

                                <br
/> 

                                <br
/>                         

                               
<%# DataBinder.Eval(Container.DataItem, “Reply”) %>   

                               
<%# DataBinder.Eval(Container.DataItem, “RDate”)
%>

                                <br
/>

                                <div id='<%#”Reply” +
DataBinder.Eval(Container.DataItem, “ID”) %>’
style=”display:none;”>

                                   
<p>—————————-</p>

                                   
<asp:TextBox ID=”RepInput” runat=”server” TextMode=”MultiLine”
Width=”300″ Height=”70″></asp:TextBox>

                                    <br
/>

                                   
<asp:LinkButton ID=”RepButton1″ runat=”server”
CommandArgument= ‘<%# Eval(“id”)+”,”+(Container as
RepeaterItem).ItemIndex%>’ 
OnCommand=”RepButton_Click”
CommandName=”save”>提交</asp:LinkButton>

                                   
<a href=”javascript:;”
onclick=’HideReply(“<%#”Reply”+DataBinder.Eval(Container.DataItem,”ID”)
%>”)’ >取消</a>

                               
</div>      
                             

                           
</td>

                       
</tr>

                        <tr
id=”Right_Bottom” valign=”middle”>

                            <td
height=”22″ valign=”middle”>

                               
<div id=”UserInfo”>

                                   
<img class=”im” src=”../image/email.gif” alt=”Email”
height=”15″ width=”15″ /><%#”<a href=mailto:”+
DataBinder.伊娃l(Container.DataItem, “Email”) +”>电子邮箱</a>
“%>

                                   
<img class=”im” src=”../image/home.gif” alt=”Email”
height=”15″ width=”15″ /><%#”<a href=http://"+
DataBinder.伊娃l(Container.DataItem, “HomePage”)+”
>个人主页</a>”%>

                                   
<img class=”im” src=”../image/oicq.gif” alt=”Email”
height=”15″ width=”15″ /><%#”<a href= “+
DataBinder.Eval(Container.DataItem, “QQ”)+” >QQ</a>
“%>

                                   
<span id=”Master”>

                                     
 <a href=”javascript:;”
onclick=’ShowReply(“<%#”Reply”+DataBinder.伊娃l(Container.DataItem,”ID”)
%>”)’>回复留言</a>                                 

                                      
<asp:LinkButton ID=”LinkButton2″ runat=”server”
OnClientClick=”return confirm(‘明确要去除那条留言么?’);”
OnCommand=”Del_Click” CommandArgument= ‘<%#
DataBinder.Eval(Container.DataItem,”ID”) %>’>删除留言</asp:LinkButton>

                                   
</span>

                               
</div>

                           
</td>

                       
</tr>

                   
</table>

               
</ItemTemplate>

           
</asp:Repeater>

 

小编们暂时不去追究那段代码,只供给去注意一下革命部分就好。

新民主主义革命部分是多少个藏匿的Div层,里面是四个TextBox控件和1个用来提交回复留言的LinkButton控件。

当然那么些层是逃匿的,平常情状下是看不到的。当大家点击上面包车型大巴超链接“回复留言”的时候那个层就展现出来(相关的js代码忽略)。然后我们在这些层里的TextBox框输入大家的留言,随即点击“提交”控件提交内容。那一个时候就有一个标题了:大家是怎么获得Repeater控件里面包车型地铁控件值的(注意:这一个控件是“活的”,是在运维的时候依照客户来输入的,而不是我们定死的始末,如Label控件!)并将这么些值写进数据库中相关的表中并且用于区分是对这些留言者的还原?

要缓解上述难题就不可能不理解Repeater控件的运行机制原理。既然是双重得读取记录,那么一定有用于区分记录的“项值”,由此(Container as
RepeaterItem).ItemIndex那个正是因而诞生。对于第3条记下它的只为0,第①条它的值为1,以此类推…因而大家就足以用它和我们数据库表中的主键一起传递到后台代码中。

CommandArgument= ‘<%#
伊娃l(“id”)+”,”+(Container as
RepeaterItem).ItemIndex%>’的意思很明朗,id
就是后台数据库中留言记录唯一的主键值,中间隔三个逗号之后再连接二个项值。那样在后台我们就可以轻松得到那多个首要的值了。

子孙相关事件代码如下:

public
void RepButton_Click(object sender, CommandEventArgs e)

        {          

            RepText =
this.Rep.Items[Convert.ToInt32(e.CommandArgument.ToString().Split(‘,’)[1])].FindControl(“RepInput”)
as TextBox;

               
System.Data.OleDb.OleDbConnection con =
MengXin.MyCode.DB.CreateConnect();

               
System.Data.OleDb.OleDbDataAdapter Ada = new
System.Data.OleDb.OleDbDataAdapter(“Select *
from GuestBook where state = yes and ID = ” +
e.CommandArgument.ToString().Split(‘,’)[0], con);

               
System.Data.OleDb.OleDbCommandBuilder Bui = new
System.Data.OleDb.OleDbCommandBuilder(Ada);

                DataSet ds = new
DataSet();

                Ada.Fill(ds,
“RepGuestBook”);

                if
(ds.Tables[“RepGuestBook”].Rows.Count > 0)

                {

                   
ds.Tables[“RepGuestBook”].Rows[0][“Reply”] =
“———————-<br />管理员回复:<br
/><br /><p style=’color:#fcb202′>” + RepText.Text +
“</p><br />于”;

                   
ds.Tables[“RepGuestBook”]ACCESS,.Rows[0][“RDate”] =
System.DateTime.Now.ToString();

                    Ada.Update(ds,
“RepGuestBook”);

                }

                else

                {                 

                   
Response.Write(“<script
language=javascript>alert(‘无记录!’);window.location=’Default.aspx’;</script>”);

 

                }

               
con.Close();

               
Response.Write(“<script
language=javascript>window.location=’Default.aspx’;</script>”);

 

           

        }

 

小心事件中深赫色的局地,RepText是叁个TextBox控件,首倘诺吸收客户点击的项中的回复留言的内容。

切切实实的还索要多多练习实践。要是构成Ajax,完毕一下部分刷新就完善兑现了QQ留言板的成效了…

 

PS:以上代码在XP+IIS5.1+VS贰零零捌+IE8+ACCESS测试通过…

相关文章