#c# #asp.net
#c# #asp.net
Вопрос:
Я сохраняю таблицу данных в gridview без базы данных. Это работало. Но при добавлении 20 строк кнопка ДОБАВЛЕНИЯ перестала работать. Мне не удалось выяснить проблему. Это будет очень полезно. Если кто-то может это понять.
Я просто могу понять, что после нажатия 20-го раза кнопка не смогла запустить событие onclick.
Это файл .aspx:
<div class="row"> <div class="col-md-4">
<label for="ddlAlloAcc">Allocate Account</label> <asp:DropDownList ID="ddlAlloAcc" runat="server" BorderColor="#666666" CssClass="form-control " AutoPostBack="true" AccessKey="A" TabIndex="11" OnSelectedIndexChanged="ddlAlloAccOnSelectedIndexChanged" > </asp:DropDownList> </div>
<div class="col-md-4"> <label for="txtDrAcCode">Account Code</label> <asp:TextBox ID="txtDrAcCode" runat="server" BorderColor="#666666" CssClass="form-control "></asp:TextBox> </div>
<asp:Panel ID="Panel2" runat="server" CssClass="col-md-4 panlcss" DefaultButton="btnDrSave">
<div class="col-md-9">
<label for="txtDrAmount">Amount</label>
<asp:TextBox ID="txtDrAmount" runat="server" BorderColor="#666666" CssClass="form-control " CausesValidation="True" TabIndex="12"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ControlToValidate="txtDrAmount" ErrorMessage="You Have To Use Neumeric Value" ValidationExpression="([0-9])[0-9]*[.]?[0-9]*" ForeColor="Red"></asp:RegularExpressionValidator>
</div>
<div class="col-md-3">
<div class="col-md-12">
<br />
</div>
<div class="col-md-12" style="margin: 0px; padding: 0px; padding-top: 10px;" >
<asp:Button ID="btnDrSave" CssClass="btn btn-primary" Text="Add" TabIndex="13" runat="server" OnClick="btnDrSaveOnClick" /></div>
</div>
</asp:Panel>
</div>
</div>
<asp:GridView ID="GvShowAllocateaccount" runat="server" Width="100%" CssClass="table table-striped table-bordered table-condensed" AutoGenerateColumns="false"
OnRowDeleting="GvShowAllocateaccount_RowDeleting" OnRowDataBound="GvShowAllocateaccount_RowDataBound" RowStyle-CssClass="zero">
<HeaderStyle CssClass="headerStyle"></HeaderStyle>
<RowStyle CssClass="rowStyle"></RowStyle>
<Columns>
<asp:BoundField DataField="DrAccCode" ItemStyle-HorizontalAlign="Center" HeaderText="Account Code" />
<asp:BoundField DataField="DrAccAccount" ItemStyle-HorizontalAlign="Center" HeaderText="Allocate Account" />
<asp:BoundField DataField="DrAmount" ItemStyle-HorizontalAlign="Center" HeaderText="Amount"></asp:BoundField>
<asp:TemplateField ItemStyle-HorizontalAlign="Center" HeaderText="Delete">
<ItemTemplate>
<asp:Button ID="ButtonDelete" runat="server" CommandName="Delete" Text="X" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Это файл aspx.cs:
protected void btnDrSaveOnClick(object sender, EventArgs e)
{
try
{
if (ddlAlloAcc.SelectedIndex != 0 amp;amp; txtDrAmount.Text != "")
{
Div1.Visible = true;
if (ViewState["CurrentData"] != null)
{
DataTable dt = (DataTable)ViewState["CurrentData"];
int count = dt.Rows.Count;
BindGrid(count);
ddlAlloAcc.Focus();
}
else
{
BindGrid(1);
ddlAlloAcc.Focus();
}
}
else
{
ScriptManager.RegisterStartupScript(this, GetType(), "Save", "alert('All Field Are Mandatory!');", true);
}
}
catch (Exception ex)
{
VDT.ShowMessage(lblMsg, ex.Message, "ERR");
}
}
private void BindGrid(int rowcount)
{
DataTable dt = new DataTable();
DataRow dr;
DataColumn DrAccCode, DrAccAccount, DrAmount;
DrAccCode = new DataColumn("DrAccCode", Type.GetType("System.String"));
DrAccAccount = new DataColumn("DrAccAccount", Type.GetType("System.String"));
DrAmount = new DataColumn("DrAmount", Type.GetType("System.String"));
dt.Columns.Add(DrAccCode);
dt.Columns.Add(DrAccAccount);
dt.Columns.Add(DrAmount);
int temp = 0;
txtDrAmount.Text = Math.Round(Convert.ToDouble(txtDrAmount.Text), 4).ToString(".0000");
if (btnDrSave.Text == "Add")
{
if (ViewState["CurrentData"] != null)
{
double x = Convert.ToDouble(txtDrAmount.Text);
dt = (DataTable)ViewState["CurrentData"];
for (int j = 0; j < rowcount; j )
{
if (dt.Rows[j]["DrAccCode"].ToString() == txtDrAcCode.Text)
{
ScriptManager.RegisterStartupScript(this, GetType(), "Save",
"alert('This Charge Head has already been added...');", true);
temp ;
break;
}
}
if (dt.Rows.Count > 0)
{
dr = dt.NewRow();
dr[0] = dt.Rows[0][0].ToString();
}
if (temp == 0) {
dr = dt.NewRow();
dr[0] = txtDrAcCode.Text;
dr[1] = ddlAlloAcc.SelectedItem.Text;
dr[2] = txtDrAmount.Text;
dt.Rows.Add(dr);
lblTotal.InnerText = (Convert.ToDouble(lblTotal.InnerText) x).ToString();
}
}
else
{
dr = dt.NewRow();
dr[0] = txtDrAcCode.Text;
dr[1] = ddlAlloAcc.SelectedItem.Text;
dr[2] = txtDrAmount.Text;
dt.Rows.Add(dr);
lblTotal.InnerText = "0";
lblTotal.InnerText = txtDrAmount.Text;
double x = Math.Truncate(Convert.ToDouble(txtDrAmount.Text) * 10000) / 10000;
lblTotal.InnerText = x.ToString();
lblTotal.InnerText = (Math.Truncate(Convert.ToDouble(lblTotal.InnerText) * 10000) / 10000).ToString();
}
}
if (ViewState["CurrentData"] != null)
{
GvShowAllocateaccount.DataSource =(DataTable)ViewState["CurrentData"];
GvShowAllocateaccount.DataBind();
if (btnSave.Text == "Save")
ClearData();
}
else
{
GvShowAllocateaccount.DataSource = dt;
GvShowAllocateaccount.DataBind();
if(btnSave.Text=="Save")
ClearData();
}
ViewState["CurrentData"] = dt;
}
Комментарии:
1. Запускали ли вы отладчик браузера (обычно F12), чтобы проверить, есть ли у вас какие-либо ошибки JS в браузере (при условии, что вы не получаете никаких ошибок сервера)?
2. да, вы правы, это был неперехваченный Sys.WebForms. Исключение PageRequestManagerServerErrorException: Sys.WebForms. Исключение PageRequestManagerServerErrorException: произошла неизвестная ошибка при обработке запроса на сервере. Код состояния, возвращенный с сервера, был: 500. Но не знаю, как пройти, чтобы решить.
Ответ №1:
Я бы предложил включить, Breaking When Exceptions
которые выбрасываются для Common Language Runtime Exceptions
:
Visual Studio (2017) => Debug => Windows => Exception Settings
Внизу экрана должно открыться окно, второй вариант Common Runtime Exceptions
, проверьте это, и тогда, по крайней мере, у вас будет разрыв кода, при котором исключение выдается на стороне сервера.
Комментарии:
1. Спасибо, что показали мне путь. Это помогло мне решить проблему.