Как я могу получить выбранную строку ссылку в 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