Member 14315477 Ответов: 1

Как я могу получить выбранную строку ссылку в GridView в ASP.NET ВБ


У меня есть следующий код который работает для кнопки ссылки как настроить код так чтобы он работал для гиперссылки:

Что я уже пробовал:

<pre>Dim Lnkbtn As LinkButton = CType(sender, LinkButton)
Dim CommandName As String = Lnkbtn.CommandName
Dim CommandArgument As String = Lnkbtn.CommandArgument

strSQLCon = "Data Source=xxxxxxxxxxxxx;Initial Catalog=dbtesting;Trusted_Connection=True;"
conConn = New SqlConnection(strSQLCon)

Dim testrow As GridViewRow = GridView1.Rows(Lnkbtn.CommandArgument)
Dim strTblNbrLst As String = Nothing

For i As Integer = 0 To 7

strTblNbrLst &= "," & testrow.Cells(10 + i).Text

Next

strTblNbrLst = strTblNbrLst.TrimStart(",")

comComm = New SqlCommand
With comComm

.Connection = conConn
.CommandType = CommandType.Text
.CommandText = "SELECT * FROM tbl WHERE TblNbr IN ('" & strTblNbrLst.Replace(",", "','") & "') ORDER BY TblNbr, LneNbr"


End With

'-- Fill a datable with the above
adpAdap = New SqlDataAdapter(comComm)
adpAdap.Fill(Datatbl)

Dim dv As New DataView(Datatbl)
Dim arrTblNbrLst() As String = Strings.Split(strTblNbrLst, ",")

'-- Loop through each table number and filter on the table
For i As Integer = 0 To arrTblNbrLst.Count - 1

dv.RowFilter = "TblNbr = '" & arrTblNbrLst(i) & "'"

' -- Loop through each "row" of the view And build a temp string before applying to the textbox
Dim strTemp As String = Nothing

For k As Integer = 0 To dv.Count - 1
strTemp &= dv(k)("TxtDat").ToString
Next

'-- Select the correct textbox
Select Case i
Case 0
TextBox2.Text = strTemp
Case 1
TextBox3.Text = strTemp
Case 2
TextBox4.Text = strTemp
Case 3
TextBox5.Text = strTemp
Case 4
TextBox6.Text = strTemp
Case 5
TextBox7.Text = strTemp
Case 6
TextBox8.Text = strTemp
Case 7
TextBox9.Text = strTemp
Case Else

End Select
Next


Catch ex As Exception

MsgBox("Error: Unable to complete Link Button Event. " & ex.Message & ex.StackTrace)

Finally

If Not IsNothing(conConn) Then conConn.Close()

        End Try

End Sub

Richard Deeming

Ваш код почти наверняка уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]

.CommandText = "SELECT * FROM tbl WHERE TblNbr IN (@P0, @P1, @P2, @P3, @P4, @P5, @P6, @P7) ORDER BY TblNbr, LneNbr"
For i As Integer = 0 To 7
    .Parameters.AddWithValue("@P" & i.ToString(), testrow.Cells(10 + i).Text)
Next

1 Ответов

Рейтинг:
0

Gerry Schmitz

Я не вижу никакого кода, ссылающегося на "выбранный элемент". Это должно быть в обработчике событий? Почему вы скрывали этот факт?

Почему вы ожидаете / хотите, чтобы гиперссылка работала так же, как кнопка ссылки?

Если вы хотите, чтобы он вел себя как "кнопка ссылки", то используйте кнопку ссылки.


Member 14315477

Я хочу открыть новую страницу, щелкнув гиперссылку, и показать другие данные, соответствующие строке гиперссылки, которую я щелкнул на новой странице, отображаемой в текстовом поле.