模仿csdn做个引用功能,问题是:
绑定数据时候,lblReplyNum这个lable中绑定的是具体楼层数,
Label lblReplyNum = rptReply.Controls[j].FindControl("lblReplyNum") as Label;
lblReplyNum.Text = "<a href='javascript:history.go(0);'># " + (1 + j) + "</a>";
现在,我在点击引用按钮以后,怎么得到这个楼层数(也就是要怎么知道你是引用了哪一层的内容)
绑定数据时候,lblReplyNum这个lable中绑定的是具体楼层数,
Label lblReplyNum = rptReply.Controls[j].FindControl("lblReplyNum") as Label;
lblReplyNum.Text = "<a href='javascript:history.go(0);'># " + (1 + j) + "</a>";
现在,我在点击引用按钮以后,怎么得到这个楼层数(也就是要怎么知道你是引用了哪一层的内容)
就好像是现在,我引用了你的,怎么得到这个1,并且显示为:引用 1 楼 gxingmin 的回复:
我是将其内容绑定到repeater中,
for (int j = 0; j < rptReply.Controls.Count; j++)
{
Label lblReplyNum = rptReply.Controls[j].FindControl("lblReplyNum") as Label;
lblReplyNum.Text = "<a href='javascript:history.go(0);'># " + (1 + j) + "</a>";
}
现在我要点击引用按钮,得到当前楼层数?
在Repeater绑定的时候加入了层数问题就是,我引用了你的帖子(你在9楼),如何得到这个"9"
设定“引用”按钮的控件类型为LinkButton;使其触发repeater_ItemCommand事件.
在后台获取数据:
e.Item.FindControl("lblReplyNum")//得到楼层
e.Item.FindControl("显示楼层答复的控件ID")//得到内容最后给最下面的回复框赋值就行了。
{
Label lblReplyNum = rptReply.Controls[j].FindControl("lblReplyNum") as Label;
lblReplyNum.Text = "<a href='javascript:history.go(0);'># " + (1 + j) + "</a>";
}
我是在label中显示楼层数的,
<asp:LinkButton runat="server" ID="lnkbtn" Text="引用" CommandName="Create" CommandArgument='<%#Eval("层数的绑定字段") %>'></asp:LinkButton>
我用 全局公共变量replyNum绑定,也不行
<asp:LinkButton runat="server" ID="lblReplyQuote" Text="引用" OnClick="lblReplyQuote_Click"
CommandName="quote" CommandArgument='<%=Eval("replyNum") %>'></asp:LinkButton>
把数据保存成文本样式,在页面显示的时候需要用到自定义标签和样式,这方面内容可以拷贝CSDN样式
for (int j = 0; j < rptReply.Controls.Count; j++)
{
Label lblReplyNum = rptReply.Controls[j].FindControl("lblReplyNum") as Label;
lblReplyNum.Text = "<a href='javascript:history.go(0);'># " + (1 + j) + "</a>";
}你这个写在
Repeater1.DataSource = dt;
Repeater1.DataBind();
下面?
这些代码都是在Page_Load里面的吗? 怎么我写的时候
Label lblReplyNum = rptReply.Controls[j].FindControl("lblReplyNum") as Label;
取不到Label 取到的是null 都不能绑定层数。
rptReply.DataSource = ds;
rptReply.DataBind();
不然你的找不到那个控件
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(string));
dt.Columns.Add("name", typeof(string));
DataRow row1 = dt.NewRow();
row1["id"] = "1";
row1["name"] = "张三";
dt.Rows.Add(row1);
DataRow row2 = dt.NewRow();
row2["id"] = "2";
row2["name"] = "李四";
dt.Rows.Add(row2);
DataRow row3 = dt.NewRow();
row3["id"] = "3";
row3["name"] = "王五";
dt.Rows.Add(row3);
Repeater1.DataSource = dt;
Repeater1.DataBind();
for (int j = 0; j < Repeater1.Items.Count; j++)
{
Label lblReplyNum = Repeater1.Items[j].FindControl("lblReplyNum") as Label;
lblReplyNum.Text = (1 + j).ToString();
}
}
}
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "Create")
{
Label lblReplyNum = e.Item.FindControl("lblReplyNum") as Label;
this.txt.Text = lblReplyNum.Text; }
}
<form id="form1" runat="server">
<div>
<table width="600">
<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">
<HeaderTemplate>
<tr>
<td>
名称
</td>
<td>
层数
</td>
<td>
引用
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%#Eval("name")%>
</td>
<td>
<asp:Label runat="server" ID="lblReplyNum"></asp:Label>
</td>
<td>
<asp:LinkButton runat="server" ID="linkBtn" CommandName="Create" CommandArgument='<%#Eval("id")%>'
Text="引用"></asp:LinkButton>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</div>
<br />
<br />
<br />
层数:<asp:TextBox runat="server" ID="txt"></asp:TextBox>
</form>