带有超链接A-Z的Asp.net repeater,单击时该值将转到标签
这里有几个问题。我只是想从中继器获取数据,但我想我的代码还不够。您能帮我获取中继器的选定值并将其发送到我的标签吗带有超链接A-Z的Asp.net repeater,单击时该值将转到标签,asp.net,Asp.net,这里有几个问题。我只是想从中继器获取数据,但我想我的代码还不够。您能帮我获取中继器的选定值并将其发送到我的标签吗 Imports System.Data Imports System.Data.SqlClient Partial Class About_ReportBug Inherits System.Web.UI.Page Protected _letterFilter As String Protected Sub Page_Load(ByVal sender As Object
Imports System.Data
Imports System.Data.SqlClient
Partial Class About_ReportBug
Inherits System.Web.UI.Page
Protected _letterFilter As String
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
initControls()
End If
End Sub
Private Sub initControls()
letters_Bind()
End Sub
Private Sub letters_Bind()
Dim dt As DataTable
If Session(Me.ToString() & "_LettersData") Is Nothing Then
Dim letters As String() = {"A", "B", "C", "D", "E", "F", _
"G", "H", "I", "J", "K", "L", _
"M", "N", "O", "P", "Q", "R", _
"S", "T", "U", "V", "W", "X", _
"Y", "Z", "All"}
dt = New DataTable()
dt.Columns.Add(New DataColumn("Letter", GetType(String)))
For i As Integer = 0 To letters.Length - 1
Dim dr As DataRow = dt.NewRow()
dr(0) = letters(i)
dt.Rows.Add(dr)
Next
Session(Me.ToString() & "_LettersData") = dt
Else
dt = DirectCast(Session(Me.ToString() & "_LettersData"), DataTable)
End If
rptLetters.DataSource = dt.DefaultView
rptLetters.DataBind()
End Sub
Private Sub letters_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs)
Dim data As DataRowView = DirectCast(e.Item.DataItem, DataRowView)
If DirectCast(data(0), String) = _letterFilter Then
Dim lnkletter As LinkButton = DirectCast(e.Item.FindControl("lnkletter"), LinkButton)
lnkletter.Enabled = False
End If
End Sub
Private Sub letters_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs)
If e.CommandName = "Filter" Then
Dim repeater As RepeaterItem = Me.rptLetters.Items(e.Item.ItemIndex)
Dim lnkletter As TextBox = repeater.FindControl("_lnkletter")
Label1.Text = lnkletter.Text
End If
End Sub
末级
我的客户方
<asp:repeater id="rptLetters" runat="server">
<itemtemplate>
<asp:linkbutton id="lnkLetter" runat="server" commandname="Filter" commandargument='<%# DataBinder.Eval(Container, "DataItem.Letter")%>' forecolor ="#8C4510">
<%# DataBinder.Eval(Container, "DataItem.Letter")%>
</asp:linkbutton>
</itemtemplate>
</asp:repeater>
<br />
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>
如果标签不在范围内,您可以从ItemDataBound
或ItemCommand
内设置标签e.Item.FindControl
将仅在ItemTemplate
中找到控件
Label1.Text = "Some Text"
Dim label1 As Label= DirectCast(
e.Item.NamingContainer.FindControl("Label1"), Label)
label1.Text = "Some Text"
或者,您也可以使用NamingContainer
在树上行走,并在ItemTemplate
之外引用控件
Label1.Text = "Some Text"
Dim label1 As Label= DirectCast(
e.Item.NamingContainer.FindControl("Label1"), Label)
label1.Text = "Some Text"
要从ItemCommand
获取所选项目,请执行以下操作:
Protected Sub letters_ItemCommand(ByVal source As Object,
ByVal e As RepeaterCommandEventArgs)
Handles rptLetters.ItemCommand
Dim rpItem As RepeaterItem = Me.rptLetters.Items(e.Item.ItemIndex)
Dim lnkletter As LinkButton = DirectCast(e.Item.FindControl("lnkletter"),
LinkButton)
Label1.Text = lnkletter.Text
End Sub
您还缺少中继器上的OnItemCommand
事件
<asp:repeater id="rptLetters" runat="server" OnItemCommand="letters_ItemCommand">
<itemtemplate>
<asp:linkbutton id="lnkLetter" runat="server"
commandname="Filter"
commandargument='<%# DataBinder.Eval(Container, "DataItem.Letter")%>'
forecolor ="#8C4510">
<%# DataBinder.Eval(Container, "DataItem.Letter")%>
</asp:linkbutton>
</itemtemplate>
</asp:repeater>
您好,请尝试更改您的代码,请参见以下内容:
Private Sub letters_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rptLetters.ItemDataBound
Private Sub letters_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles rptLetters.ItemCommand
先生,label1.text=“Some text”是什么意思?我要把它放在哪里?先生:)我的意思是,这就是从方法内部引用
Label1
(而不是FindControl
)的方式,部分原因是我误读了这个问题。先生,我已经做了必须说的事情,但仍然不起作用。对不起,先生,我不能理解深奥的英语,因为我只是一个学生,我对通用语言不是很在行。希望您理解^ ^我注意到您没有在中继器上注册OnItemCommand
事件。