none
Select - GridView RRS feed

  • Pergunta

  •  Gente, Boa Tarde!
       estou desenvolvendo em asp.net , e estou utilizando uma gridview para poder alterar os dados na própria tabela, porém está acusando um erro que eu não consigo resolver, já fazem 3 dias.

    Abaixo segue o erro:

    Erro de Servidor no Aplicativo '/'.

    'Select' tem um SelectedValue que é inválido porque ele não existe na lista de itens.
    Nome do parâmetro: value

    Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código.

    Detalhes da Exceção: System.ArgumentOutOfRangeException: 'Select' tem um SelectedValue que é inválido porque ele não existe na lista de itens.
    Nome do parâmetro: value

    Erro de Origem:
    Exceção sem tratamento foi gerada durante a execução da atual solicitação da Web. As informações relacionadas à origem e ao local da exceção podem ser identificadas usando-se o rastreamento de pilha de exceção abaixo.

    Rastreamento de Pilha:
    [ArgumentOutOfRangeException: 'Select' tem um SelectedValue que é inválido porque ele não existe na lista de itens.
    Nome do parâmetro: value]
       System.Web.UI.WebControls.ListControl.PerformDataBinding(IEnumerable dataSource) +1316
       System.Web.UI.WebControls.ListControl.OnDataBinding(EventArgs e) +431
       System.Web.UI.WebControls.ListControl.PerformSelect() +65
       System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +140
       System.Web.UI.Control.DataBindChildren() +244
       System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +225
       System.Web.UI.Control.DataBind() +36
       System.Web.UI.Control.DataBindChildren() +244
       System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +225
       System.Web.UI.Control.DataBind() +36
       System.Web.UI.WebControls.GridView.CreateRow(Int32 rowIndex, Int32 dataSourceIndex, DataControlRowType rowType, DataControlRowState rowState, Boolean dataBind, Object dataItem, DataControlField[] fields, TableRowCollection rows, PagedDataSource pagedDataSource) +243
       System.Web.UI.WebControls.GridView.CreateChildControls(IEnumerable dataSource, Boolean dataBinding) +7051
       System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) +117
       System.Web.UI.WebControls.GridView.PerformDataBinding(IEnumerable data) +65
       System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data) +208
       System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +131
       System.Web.UI.WebControls.DataBoundControl.PerformSelect() +225
       System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +140
       System.Web.UI.WebControls.GridView.DataBind() +29
       System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +101
       System.Web.UI.WebControls.BaseDataBoundControl.OnPreRender(EventArgs e) +43
       System.Web.UI.WebControls.GridView.OnPreRender(EventArgs e) +91
       System.Web.UI.Control.PreRenderRecursiveInternal() +231
       System.Web.UI.Control.PreRenderRecursiveInternal() +329
       System.Web.UI.Control.PreRenderRecursiveInternal() +329
       System.Web.UI.Control.PreRenderRecursiveInternal() +329
       System.Web.UI.Control.PreRenderRecursiveInternal() +329
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5039
    

    quinta-feira, 3 de novembro de 2016 19:15

Respostas

  • Olá Larissa

    Me passa seu email que envio um exemplo para você. Acabei de criar um exemplo bem simples realizando a operação que você precisa fazer.

    De qualquer forma, segue o código que criei.

    public partial class _Default : System.Web.UI.Page
    {
        string con = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
        SqlConnection sqlcon;
        DataTable dt = new DataTable();
    
    
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                showgrid();
                GridView1.DataSource = dt;
                GridView1.DataBind();
            }
        }
        public void showgrid()
        {        
            dt.Columns.Add("emp_id");
            dt.Columns.Add("emp_name");
            dt.Columns.Add("emp_address");
            dt.Columns.Add("department");
            dt.Columns.Add("salary");
            dt.Columns.Add("Maritalstatus");
            dt.Columns.Add("Active_Status");
            dt.Columns.Add("consulta_sn");
    
            dt.Rows.Add(1, "Klayton", "Rua sem número", "Entregas", 10, "Married", 1, 0);
            dt.Rows.Add(2, "Klayton", "Rua sem número", "Entregas", 10, "Married", 1, 1);
            dt.Rows.Add(3, "Klayton", "Rua sem número", "Entregas", 10, "Married", 1, 1);
            dt.Rows.Add(4, "Klayton", "Rua sem número", "Entregas", 10, "Married", 1, 0);
            dt.Rows.Add(5, "Klayton", "Rua sem número", "Entregas", 10, "Married", 1, 1);        
        }
        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            GridView1.EditIndex = -1;
            GridView1.DataBind();
    
        }
        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
    
            GridView1.EditIndex = e.NewEditIndex;
            showgrid();
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }
        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
    
            Label lb = (Label)GridView1.Rows[e.RowIndex].FindControl("Label6");
            DropDownList ddl = (DropDownList)GridView1.Rows[e.RowIndex].FindControl("DropDownList1");
            DropDownList ddlAtivo = (DropDownList)GridView1.Rows[e.RowIndex].FindControl("ativo");
            RadioButtonList rbl = (RadioButtonList)GridView1.Rows[e.RowIndex].FindControl("RadioButtonList1");
            CheckBoxList chb = (CheckBoxList)GridView1.Rows[e.RowIndex].FindControl("CheckBoxList2");
            TextBox tx1 = (TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox1");
            TextBox tx2 = (TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox2");
            TextBox tx3 = (TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox3");
    
            showgrid();
            DataRow row = dt.Rows[e.RowIndex];
            row["consulta_sn"] = ddlAtivo.SelectedValue;
    
            GridView1.EditIndex = -1;
            GridView1.DataSource = dt;
            GridView1.DataBind();
    
    
    
        }
    
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            DataRowView drv = e.Row.DataItem as DataRowView;
            if (e.Row.RowType == DataControlRowType.DataRow)
            {            
            }
        }

    HTML

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
                CellPadding="4" ForeColor="#333333" GridLines="None"
                OnRowCancelingEdit="GridView1_RowCancelingEdit"
                OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating"
                OnRowDataBound="GridView1_RowDataBound">
                <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                <Columns>
                    <asp:TemplateField HeaderText="ID">
                        <ItemTemplate>
                            <asp:Label ID="Label6" runat="server" Text='<%# Eval("emp_id") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Name">
                        <ItemTemplate>
                            <asp:Label runat="server" Text='<%# Eval("emp_name") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("emp_name")%>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Address">
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%# Eval("emp_address") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="TextBox2" runat="server" Text='<%# Eval("emp_address") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>                
                    <asp:TemplateField HeaderText="Department">
                        <ItemTemplate>
                            <asp:Label ID="Label2" runat="server" Text='<%# Eval("department") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:DropDownList ID="DropDownList1" runat="server">
                            </asp:DropDownList>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Salary">
                        <ItemTemplate>
                            <asp:Label ID="Label3" runat="server" Text='<%# Eval("salary") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="TextBox3" runat="server" Text='<%# Eval("salary") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Status">
                        <ItemTemplate>
                            <asp:Label ID="Label4" runat="server" Text='<%# Eval("Maritalstatus") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:RadioButtonList ID="RadioButtonList1" runat="server">
                                <asp:ListItem>Single</asp:ListItem>
                                <asp:ListItem>Married</asp:ListItem>
                            </asp:RadioButtonList>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Active">
                        <ItemTemplate>
                            <asp:Label ID="Label5" runat="server" Text='<%# Eval("Active_Status") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:CheckBoxList ID="CheckBoxList2" runat="server" s>
                                <asp:ListItem>Active</asp:ListItem>
                            </asp:CheckBoxList>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Situação">
                        <ItemStyle HorizontalAlign="Left" VerticalAlign="Middle" />
                        <EditItemTemplate>
                            <asp:DropDownList ID="ativo" runat="server" DataValueField="consulta_sn" SelectedValue='<%# Bind("consulta_sn")%>'>
                                <asp:ListItem Text="Inativo" Value="0" />
                                <asp:ListItem Text="Ativo" Value="1" />
                            </asp:DropDownList>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:CheckBox ID="consulta" runat="server" Text=" ativo" Checked='<%# (Eval("consulta_sn").Equals("1")?true:false) %>'></asp:CheckBox>
                        </ItemTemplate>
                    </asp:TemplateField>
    
                    <asp:TemplateField HeaderText="Edit" ShowHeader="false">
                        <ItemTemplate>
                            <asp:LinkButton ID="btnedit" runat="server" CommandName="Edit" Text="Edit"></asp:LinkButton>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:LinkButton ID="btnupdate" runat="server" CommandName="Update" Text="Update"></asp:LinkButton>
                            <asp:LinkButton ID="btncancel" runat="server" CommandName="Cancel" Text="Cancel"></asp:LinkButton>
                        </EditItemTemplate>
                    </asp:TemplateField>
                </Columns>

    Espero ter ajudado.


    Klayton Gomes (Software Architecture) MCP/MCTS/MCAD/MCPD/MCSD Solution Developer

    sexta-feira, 4 de novembro de 2016 19:32

Todas as Respostas

  • Olá Larissa,

    Posta o código que você está utilizando para pegar a informação, mais pela mensagem você está tentando pegar um selectValue que não existe na sua lista ou tabela.

    De qualquer forma, dá uma olhada no link abaixo e veja se ele lhe ajuda em alguma coisa.

    http://www.aspsnippets.com/Articles/How-to-get-Selected-Row-cell-value-from-GridView-in-ASPNet.aspx

    https://demos.devexpress.com/MVCxGridViewDemos/Selection/RowSelection


    Klayton Gomes (Software Architecture) MCP/MCTS/MCAD/MCPD/MCSD Solution Developer

    quinta-feira, 3 de novembro de 2016 19:43
  • Boa Tarde Klayton, o problema é que eu estou usando uma droplist dentro da gridview, ai quando eu aperto no botão alterar da aquele erro, apontando que o problema está nesse selectvalue.

      segue a parte do código:

       <asp:TemplateField HeaderText="Situação">
                                            <ItemStyle HorizontalAlign="Left" VerticalAlign="Middle"/>  
                                             <EditItemTemplate>
                                            <asp:DropDownList ID="ativo" runat="server" DataValueField="consulta_sn"                              SelectedValue='<%# Bind("consulta_sn")%>' >
                                            <asp:ListItem Text="Inativo" Value="0" />
                                            <asp:ListItem Text="Ativo" Value="1" />
                                            </asp:DropDownList>
                                        </EditItemTemplate>
                                           <ItemTemplate>
                                          <asp:CheckBox ID="consulta" runat="server" Text=" ativo" checked='<%# (Eval("consulta_sn").Equals("1")?true:false) %>'></asp:CheckBox>
                                         </ItemTemplate>                                       
                                      </asp:TemplateField>
    sexta-feira, 4 de novembro de 2016 15:29
  • Olá Larissa

    Me passa seu email que envio um exemplo para você. Acabei de criar um exemplo bem simples realizando a operação que você precisa fazer.

    De qualquer forma, segue o código que criei.

    public partial class _Default : System.Web.UI.Page
    {
        string con = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
        SqlConnection sqlcon;
        DataTable dt = new DataTable();
    
    
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                showgrid();
                GridView1.DataSource = dt;
                GridView1.DataBind();
            }
        }
        public void showgrid()
        {        
            dt.Columns.Add("emp_id");
            dt.Columns.Add("emp_name");
            dt.Columns.Add("emp_address");
            dt.Columns.Add("department");
            dt.Columns.Add("salary");
            dt.Columns.Add("Maritalstatus");
            dt.Columns.Add("Active_Status");
            dt.Columns.Add("consulta_sn");
    
            dt.Rows.Add(1, "Klayton", "Rua sem número", "Entregas", 10, "Married", 1, 0);
            dt.Rows.Add(2, "Klayton", "Rua sem número", "Entregas", 10, "Married", 1, 1);
            dt.Rows.Add(3, "Klayton", "Rua sem número", "Entregas", 10, "Married", 1, 1);
            dt.Rows.Add(4, "Klayton", "Rua sem número", "Entregas", 10, "Married", 1, 0);
            dt.Rows.Add(5, "Klayton", "Rua sem número", "Entregas", 10, "Married", 1, 1);        
        }
        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            GridView1.EditIndex = -1;
            GridView1.DataBind();
    
        }
        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
    
            GridView1.EditIndex = e.NewEditIndex;
            showgrid();
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }
        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
    
            Label lb = (Label)GridView1.Rows[e.RowIndex].FindControl("Label6");
            DropDownList ddl = (DropDownList)GridView1.Rows[e.RowIndex].FindControl("DropDownList1");
            DropDownList ddlAtivo = (DropDownList)GridView1.Rows[e.RowIndex].FindControl("ativo");
            RadioButtonList rbl = (RadioButtonList)GridView1.Rows[e.RowIndex].FindControl("RadioButtonList1");
            CheckBoxList chb = (CheckBoxList)GridView1.Rows[e.RowIndex].FindControl("CheckBoxList2");
            TextBox tx1 = (TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox1");
            TextBox tx2 = (TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox2");
            TextBox tx3 = (TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox3");
    
            showgrid();
            DataRow row = dt.Rows[e.RowIndex];
            row["consulta_sn"] = ddlAtivo.SelectedValue;
    
            GridView1.EditIndex = -1;
            GridView1.DataSource = dt;
            GridView1.DataBind();
    
    
    
        }
    
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            DataRowView drv = e.Row.DataItem as DataRowView;
            if (e.Row.RowType == DataControlRowType.DataRow)
            {            
            }
        }

    HTML

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
                CellPadding="4" ForeColor="#333333" GridLines="None"
                OnRowCancelingEdit="GridView1_RowCancelingEdit"
                OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating"
                OnRowDataBound="GridView1_RowDataBound">
                <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                <Columns>
                    <asp:TemplateField HeaderText="ID">
                        <ItemTemplate>
                            <asp:Label ID="Label6" runat="server" Text='<%# Eval("emp_id") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Name">
                        <ItemTemplate>
                            <asp:Label runat="server" Text='<%# Eval("emp_name") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("emp_name")%>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Address">
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%# Eval("emp_address") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="TextBox2" runat="server" Text='<%# Eval("emp_address") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>                
                    <asp:TemplateField HeaderText="Department">
                        <ItemTemplate>
                            <asp:Label ID="Label2" runat="server" Text='<%# Eval("department") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:DropDownList ID="DropDownList1" runat="server">
                            </asp:DropDownList>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Salary">
                        <ItemTemplate>
                            <asp:Label ID="Label3" runat="server" Text='<%# Eval("salary") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="TextBox3" runat="server" Text='<%# Eval("salary") %>'></asp:TextBox>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Status">
                        <ItemTemplate>
                            <asp:Label ID="Label4" runat="server" Text='<%# Eval("Maritalstatus") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:RadioButtonList ID="RadioButtonList1" runat="server">
                                <asp:ListItem>Single</asp:ListItem>
                                <asp:ListItem>Married</asp:ListItem>
                            </asp:RadioButtonList>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Active">
                        <ItemTemplate>
                            <asp:Label ID="Label5" runat="server" Text='<%# Eval("Active_Status") %>'></asp:Label>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:CheckBoxList ID="CheckBoxList2" runat="server" s>
                                <asp:ListItem>Active</asp:ListItem>
                            </asp:CheckBoxList>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Situação">
                        <ItemStyle HorizontalAlign="Left" VerticalAlign="Middle" />
                        <EditItemTemplate>
                            <asp:DropDownList ID="ativo" runat="server" DataValueField="consulta_sn" SelectedValue='<%# Bind("consulta_sn")%>'>
                                <asp:ListItem Text="Inativo" Value="0" />
                                <asp:ListItem Text="Ativo" Value="1" />
                            </asp:DropDownList>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:CheckBox ID="consulta" runat="server" Text=" ativo" Checked='<%# (Eval("consulta_sn").Equals("1")?true:false) %>'></asp:CheckBox>
                        </ItemTemplate>
                    </asp:TemplateField>
    
                    <asp:TemplateField HeaderText="Edit" ShowHeader="false">
                        <ItemTemplate>
                            <asp:LinkButton ID="btnedit" runat="server" CommandName="Edit" Text="Edit"></asp:LinkButton>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:LinkButton ID="btnupdate" runat="server" CommandName="Update" Text="Update"></asp:LinkButton>
                            <asp:LinkButton ID="btncancel" runat="server" CommandName="Cancel" Text="Cancel"></asp:LinkButton>
                        </EditItemTemplate>
                    </asp:TemplateField>
                </Columns>

    Espero ter ajudado.


    Klayton Gomes (Software Architecture) MCP/MCTS/MCAD/MCPD/MCSD Solution Developer

    sexta-feira, 4 de novembro de 2016 19:32
  • Boa tarde,

    Devido a falta de interação do autor dessa pergunta,

    essa thread está sendo fechada. Caso o problema ainda

    esteja ocorrendo, favor abrir uma nova thread.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 7 de novembro de 2016 14:54
    Moderador
  • obrigada Klayton!
       fiquei muito grata pela sua atenção!
        problema resolvido :)
    segunda-feira, 7 de novembro de 2016 16:38