#c# #asp.net
#c# #asp.net
Вопрос:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Accept")
{
int rowIndex = Convert.ToInt32(e.CommandArgument);
GridViewRow row = GridView1.Rows[rowIndex];
row.Cells[1].Text = "ACCEPTED";
string msg = "ACCEPTED";
Session["c_email"] = row.Cells[4].Text;
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
SqlConnection con = new SqlConnection(constr);
con.Open();
string insert = "insert into Status values(@email,@c_email,@status)";
SqlCommand cmd = new SqlCommand(insert, con);
cmd.Parameters.AddWithValue("@c_email", Session["c_email"].ToString());
cmd.Parameters.AddWithValue("@email", Session["mechanic"].ToString());
cmd.Parameters.AddWithValue("@status", msg.ToString());
cmd.ExecuteNonQuery();
Label1.Text = "You need to reach the customer within one hour and provide the needful service.";
con.Close();
}
Я пытался устранить эту ошибку, но не смог этого сделать. Строка не в правильном формате, появляется эта ошибка. Но каким может быть решение? Я попробовал несколько способов, таких как «int.Parse», «Int32.Попробуйте проанализировать «, а также я добавил e.CommandArgument.toString()
Но все было просто бесполезно. Пожалуйста, помогите мне с этой ошибкой.
С нетерпением благодарю вас.
.aspx-код:
<asp:GridView ID="GridView1" runat="server"
OnRowCommand="GridView1_RowCommand"
CssClass="table-bordered table-hover table-responsive table"
BackColor="White" BorderColor="White" CellPadding="3"
DataSourceID="SqlDataSource1" AutoGenerateColumns="False">
<AlternatingRowStyle BackColor="#CCCCCC" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnpreview" runat="server" Text="Accept" CommandName="Accept" />
<asp:Button ID="btnselect" runat="server" Text="Reject" CommandName="Reject" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField HeaderText="Status" />
<asp:BoundField DataField="first_name" HeaderText="First name" SortExpression="first_name" />
<asp:BoundField DataField="last_name" HeaderText="Last name" SortExpression="last_name" />
Комментарии:
1. Пожалуйста, поделитесь своим aspx-кодом также для кнопки, которая запускает команду «Принять»!
2. Очевидно, что вам нужно предоставить строку в правильном формате . Мы понятия не имеем, каково текущее значение, поэтому за пределами этого абсолютно ничего нельзя предложить.
3. Какое
e.CommandArgument
значение? Вероятно, она не конвертируется в int, например3.0
илиtext
4. Итак, глядя на ваш aspx-код, вы не передаете никаких командных аргументов
<asp:Button ID="btnpreview" runat="server" Text="Accept" CommandName="Accept" CommandArgument="?" />
5. Попробуйте использовать
CommandArgument='<%# Container.DataItemIndex%>'
Ответ №1:
Измените кнопку «Принять» на-
<asp:Button ID="btnpreview" runat="server" Text="Accept" CommandName="Accept" CommandArgument='<%# Container.DataItemIndex%>' />
Обратите CommandArgument='<%# Container.DataItemIndex%>'
внимание на строку выше, это даст вам индекс строки.
или
Вы можете изменить свой код на-
GridViewRow row = (GridViewRow)(((Control)e.CommandSource).NamingContainer);
int rowIndex = row.RowIndex;