2013-03-01 4 views
-3
Dim objItems As clsItems 

'Loads the pages with the Gridview and Infomation pretaining to the Item selected 
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load 

    Dim qryItemNum As String = Request.QueryString("qryItemNum") 

    'Populates Gridview 
    If Not Page.IsPostBack Then 
     gvwCategorySelect.DataSource = clsCategory.GetList 
     gvwCategorySelect.DataBind() 

     'imgbtnPrev.Visible = False 

     'If Not String.IsNullOrEmpty(qryItemNum) Then 
     ' Dim ItemNum As Int32 
     ' If Int32.TryParse(test, ItemNum) Then 
     '  imgbtnPrev.Visible = (-1 < ItemNum) 
     ' End If 
     'End If 
    End If 


    objItems = New clsItems(qryItemNum) 

    'Set up the from labels 
    lblTitle.Text = objItems.Title 
    lblPrice.Text = objItems.Price.ToString("C") 
    lblDescription.Text = objItems.Description 
    ImgItem.ImageUrl = "~/images/ItemImages/Item" & objItems.ItemNum & ".jpg" 



End Sub 

'Returns to pervious item 
Protected Sub imgbtnPrev_Click(sender As Object, e As System.Web.UI.ImageClickEventArgs) Handles imgbtnPrev.Click 

    Response.Redirect("~/ItemInfo.aspx?qryItemNum=" & objItems.ItemNum - 1) 

End Sub 

'Next item 
Protected Sub imgbtnNext_Click(sender As Object, e As System.Web.UI.ImageClickEventArgs) Handles imgbtnNext.Click 


    Response.Redirect("~/ItemInfo.aspx?qryItemNum=" & objItems.ItemNum + 1) 

End Sub 

В приведенном выше коде есть 2 кнопки изображения, которые перемещаются между различными ItemNum. Im пытается остановить пользователя от нажатия предыдущей кнопки, удалив кнопку imgbtnPrev, когда строка запроса на 1.Мне нужно проверить строку запроса в asp.net

сообщение об ошибке, говорит Там нет строки в позиции 0

dataRowObject = DBMethods.CreateTable(sqlString, sqlArg).Rows(0) 

^здесь, где его выделено.

+1

[Что вы пытались?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) – Joe

+0

В чем вопрос? –

+0

Просто получите строковое значение вашего запроса с помощью Request.QueryString. и делать то, что вы хотите – Sachin

ответ

1

Попробуйте

int number; 
    if(Request.QueryString["qryItemNum"]!= null) 
    { 
    bool isNumeric = int.TryParse(Request.QueryString["qryItemNum"].ToString(), out number); 
     if(isNumeric == true) 
     { 
     if(Convert.ToInt(Request.QueryString["qryItemNum"])<=1) 
     { 
      imgbtnPrev = false; 
     } 
     } 
    } 

Edit: я преобразовал, что VB.NET

Dim number As Integer 
    If Request.QueryString("qryItemNum") IsNot Nothing Then 
Dim isNumeric As Boolean = Integer.TryParse(Request.QueryString("qryItemNum").ToString(), number) 
    If isNumeric = True Then 
    If Convert.ToInt(Request.QueryString("qryItemNum")) <= 1 Then 
     imgbtnPrev = False 
    End If 
    End If 
    End If 
+0

Это выглядело как способ сделать это (кроме 2-х поездок в строку запроса), так почему же downvote? – jp2code

+0

прокомментируйте это, когда вы уменьшите. –

+0

Я проигнорировал, потому что проверка ошибок отсутствует. Нечисловое значение числового запроса будет бомбить .... также неправильный язык .... и есть другие проблемы, которые не позволят ему компилировать. – MikeSmithDev

1

Я думаю, что это как VB делает это:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    If Not Page.IsPostBack Then 
     imgbtnPrev = False 
     Dim qryItemNum As String = Request.QueryString("qryItemNum") 
     If Not String.IsNullOrEmpty(qryItemNum) Then 
      Dim ItemNum As Int32 
      If Int32.TryParse(qryItemNum, ItemNum) Then 
      imgbtnPrev = (-1 < ItemNum) 
      End If 
     End If 
    End If 
End Sub 

Это предполагает , конечно, что imgbtnPrev определяется где-то в вашем коде или на странице ASPX.

EDIT: От одного вашего комментария imgbtnPrev.Visible = False к первоначальному вопросу, кажется, что imgbtnPrev это кнопка на форме. Если это так, то можно было бы написать что-то вроде этого:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    If Not Page.IsPostBack Then 
     imgbtnPrev.Visible = False 
     Dim qryItemNum As String = Request.QueryString("qryItemNum") 
     If Not String.IsNullOrEmpty(qryItemNum) Then 
      Dim ItemNum As Int32 
      If Int32.TryParse(qryItemNum, ItemNum) Then 
      imgbtnPrev.Visible = (-1 < ItemNum) 
      End If 
     End If 
    End If 
End Sub 

EDIT2: Этой версии использует Try...Catch, чтобы увидеть, что была ошибка:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    If Not Page.IsPostBack Then 
     imgbtnPrev.Visible = False 
     Try 
      Dim qryItemNum As String = Request.QueryString("qryItemNum") 
      If Not String.IsNullOrEmpty(qryItemNum) Then 
      Dim ItemNum As Int32 
      If Int32.TryParse(qryItemNum, ItemNum) Then 
       imgbtnPrev.Visible = (-1 < ItemNum) 
      End If 
      End If 
     Catch err As Exception 
      Response.Write(err.Message) 
     End Try 
    End If 
End Sub 

Надеется, что это помогает!

+0

syed ответил первым, но поскольку вопрос был помечен 'vb.net', я добавил это. Мой VB не самый лучший. – jp2code

+0

вместо использования "qryItemNum". значение передается через objItem.ItemNum, могу ли я заменить его на это? – user2011977

+0

Как в "Замените [Request.QueryString] на [objItem.ItemNum]?" Это не будет читать ничего из URL-адреса в строке запроса, но позволит вам читать и/или преобразовывать значение из 'objItem'. – jp2code