Usuário com melhor resposta
Select - GridView

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.
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.
Nome do parâmetro: value
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
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
- Sugerido como Resposta Robson William SilvaModerator segunda-feira, 7 de novembro de 2016 11:19
- Marcado como Resposta Robson William SilvaModerator segunda-feira, 7 de novembro de 2016 14:54
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
-
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> -
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
- Sugerido como Resposta Robson William SilvaModerator segunda-feira, 7 de novembro de 2016 11:19
- Marcado como Resposta Robson William SilvaModerator segunda-feira, 7 de novembro de 2016 14:54
-
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.
-