Malak Hudaib Ответов: 1

Что это значит-ошибка ? и как я могу ее решить ?


эта ошибка появляется, когда я проверяю пустую строку в gridview

'DropSites' has a SelectedValue which is invalid because it does not exist in the list of items.
Parameter name: value 


это процесса я decleared и использовать его в кнопку (Удалить) &ГТ;&ГТ;
-- =============================================
ALTER PROCEDURE [dbo].[setup4]
@ID int =null,
@Shortcut nvarchar(50) = null ,
@Description_sub varchar(50)=null,
@Dessribtyon_key nvarchar(50)=null,
@setup_type int=null,

@z int =null
AS
BEGIN
	if @z=1
 begin
 UPDATE setup SET Shortcut=@Shortcut,
				Description_sub=@Description_sub,
				Dessribtyon_key=@Dessribtyon_key,
				setup_type=@setup_type
				 WHERE ID  = @ID and  setup_type=@setup_type
  IF @@ROWCOUNT = 0
  INSERT into setup
        (
        ID,
        Shortcut,
        Description_sub,
        Dessribtyon_key,
        setup_type
       
        )
        VALUES 
        (
        @ID,
        @Shortcut,
        @Description_sub,
        @Dessribtyon_key,
        @setup_type
        
        )
       
    end 
        
    if @z=2
        BEGIN
			UPDATE setup SET
				Shortcut=@Shortcut,
				Description_sub=@Description_sub,
				Dessribtyon_key=@Dessribtyon_key,
				setup_type=@setup_type
			
				
		where ID=@ID
		 END
		 if 
  @z=5
	  begin
		  delete from setup where 
			ID=@ID and setup_type=@setup_type
	  END
  if
  @z=3
	  begin
		select * from setup where setup_type=@setup_type
	  end
	  
    if 
    @z=4
        begin 
           select isnull(( select max(ID) from setup 
             where setup_type=@setup_type ),0) +1
   end
END


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

Protected Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)
       For i = 0 To GridView1.Rows.Count - 1
           If CType(GridView1.Rows(i).FindControl("CheckBox1"), CheckBox).Checked Then
               TextID.Text = CType(GridView1.Rows(i).FindControl("LblID"), Label).Text
               TextName.Text = CType(GridView1.Rows(i).FindControl("Label10"), Label).Text
               DropSites.SelectedValue = CType(GridView1.Rows(i).FindControl("lblsites1"), Label).Text
               DropDep.SelectedValue = CType(GridView1.Rows(i).FindControl("lbldept1"), Label).Text
               DropNat.SelectedValue = CType(GridView1.Rows(i).FindControl("lblNat"), Label).Text
               DDLRel.SelectedValue = CType(GridView1.Rows(i).FindControl("lblrel1"), Label).Text
               TextBitrh.Text = CType(GridView1.Rows(i).FindControl("Label15"), Label).Text
               TextHiring.Text = CType(GridView1.Rows(i).FindControl("Label16"), Label).Text
               Exit Sub
           Else
               If TextID.Text = "" Then
                   TextID.Text = 0
               Else
                   TextID.Text = TextID.Text
               End If
               If TextName.Text = "" Then
                   TextName.Text = 0
               Else
                   TextName.Text = TextName.Text
               End If
               DropSites.SelectedIndex = 0
               DropDep.SelectedIndex = 0
               DropNat.SelectedIndex = 0
               DDLRel.SelectedIndex = 0
               TextBitrh.Text = ""
               TextHiring.Text = ""
           End If
       Next
   End Sub

Richard Deeming

Ошибка означает именно то, что она говорит - Вы установили SelectedValue собственность компании DropSites управление значением, которого нет в списке.

Вам нужно отладить свой код, чтобы выяснить, почему это значение не существует.

1 Ответов

Рейтинг:
12

Karthik_Mahalingam

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

Dim strValue As String = CType(GridView1.Rows(i).FindControl("lblsites1"), Label).Text
      Dim listitem As ListItem = DropSites.Items.FindByValue(strValue) ' FindByValue or FindByText , depends on the binding
      If (Not listitem Is Nothing) Then
          listitem.Selected = True
      End If


Malak Hudaib

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

Karthik_Mahalingam

вместо этой строки
Дропсайты.SelectedValue = Ctype Для(Управления Gridview1.Ряды(я).FindControl("lblsites1"), ярлык).Текст

Malak Hudaib

я заменю это "предварительно" Дропсайтами.SelectedValue = Ctype Для(Управления Gridview1.Ряды(я).FindControl("lblsites1"), ярлык).Текст < / pre>
с этим
в <предварительно>в тусклом strValue как String = ctype для(управления gridview1.Ряды(я).FindControl("lblsites1"), ярлык).Текст
Дим listitem элемент как элемент listitem = DropSites.Предметы.FindByValue (strValue) ' FindByValue или FindByText, зависит от привязки
Если (не listitem-это ничто), то
listitem элемент.Selected = True
Конец, Если
< / pre>

Karthik_Mahalingam

ладно, ладно.

Malak Hudaib

Спасибо

Karthik_Mahalingam

добро пожаловать