需要点击按钮两次编辑和更新gridview数据
在我的应用程序中,我需要编辑gridview行点击该特定行的编辑按钮一切工作正常编辑更新和取消问题是当我点击编辑按钮我的GridView中再次消失,看看在GridView需要点击按钮两次编辑和更新gridview数据
<asp:Button ID="Button1" runat="server" style="border:1px solid #456879;border-radius:5px;height: 22px;Width:150px" OnClick="Button1_Click" Text="Get Uploaded Data" Width="132px" />
,同样更新我的GridView消失后,我应该点击下面的按钮,但更新发生如此再次看到GridView的,我应该再次点击上面的按钮获取上传了数据,最后以编辑gridview数据我需要点击按钮两次,为了再次看到更新的数据我需要点击按钮两次。我可以如何解决这个问题
<asp:GridView ID="GridView2" runat="server" CellPadding="3" Font-Size="12px" Width="300px" Visible="false" OnRowEditing="GridView2_RowEditing" OnRowUpdating="GridView2_RowUpdating" OnRowCommand="GridView2_RowCommand" OnRowCancelingEdit="GridView2_RowCancelingEdit" AutoGenerateColumns="False" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px">
<Columns>
<asp:TemplateField HeaderText="Action">
<ItemTemplate>
<asp:ImageButton ID="imgbtnEdit" runat="server" CommandName="Edit" ImageUrl="Images/icon-edit.png" Height="32px" Width="32px"/>
</ItemTemplate>
<EditItemTemplate>
<asp:ImageButton ID="imgbtnUpdate" runat="server" CommandName="Update" ImageUrl="Images/update1.jpg"/>
<asp:ImageButton ID="imgbtnCancel" runat="server" CommandName="Cancel" ImageUrl="Images/cancel.jpg"/>
</EditItemTemplate>
</asp:TemplateField>
<asp:templatefield headertext="sno">
<itemtemplate>
<asp:label id="lblid" runat="server" text='<%#DataBinder.Eval(Container.DataItem, "ID") %>'></asp:label>
</itemtemplate>
<edititemtemplate>
<asp:label id="lbleditid" runat="server" text='<%#DataBinder.Eval(Container.DataItem, "ID") %>'></asp:label>
</edititemtemplate>
</asp:templatefield>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lblName" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Name") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtEditName" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Name") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Salary">
<ItemTemplate>
<asp:Label ID="lblSalary" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Salary") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtEditSalary" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Salary") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Designation">
<ItemTemplate>
<asp:Label ID="lblDesignation" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Designation") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtEditDesignation" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Designation") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Location">
<ItemTemplate>
<asp:Label ID="lblLocation" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Location") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtEditLocation" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Location") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
.CS码
protected void GridView2_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView2.EditIndex = e.NewEditIndex;
GridView2.DataBind();
GridView2.Visible = true;
}
protected void GridView2_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
Label lblEditID = (Label)GridView2.Rows[e.RowIndex].FindControl("lblEditID");
TextBox txtEditName = (TextBox)GridView2.Rows[e.RowIndex].FindControl("txtEditName");
TextBox txtEditSalary = (TextBox)GridView2.Rows[e.RowIndex].FindControl("txtEditSalary");
TextBox txtEditDesignation = (TextBox)GridView2.Rows[e.RowIndex].FindControl("txtEditDesignation");
TextBox txtEditLocation = (TextBox)GridView2.Rows[e.RowIndex].FindControl("txtEditLocation");
con.Open();
string cmdstr = "update CodingLog1 set [email protected],[email protected],[email protected],[email protected] where [email protected]";
SqlCommand cmd = new SqlCommand(cmdstr, con);
cmd.Parameters.AddWithValue("@ID", lblEditID.Text);
cmd.Parameters.AddWithValue("@Name", txtEditName.Text);
cmd.Parameters.AddWithValue("@Salary", txtEditSalary.Text);
cmd.Parameters.AddWithValue("@Designation", txtEditDesignation.Text);
cmd.Parameters.AddWithValue("@Location", txtEditLocation.Text);
cmd.ExecuteNonQuery();
con.Close();
GridView2.EditIndex = -1;
GridView2.Visible = true;
GridView2.DataBind();
}
protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
{
}
protected void GridView2_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView2.EditIndex = -1;
GridView2.Visible = true;
GridView2.DataBind();
}
代码 -
protected void Button1_Click(object sender, EventArgs e)
{
GridView1.DataSource = null; GridView1.DataBind();
string desi = Session["Role"].ToString();
string user = Session["Username"].ToString();
string selecteduser = ddlusers.SelectedItem.Text;
if (TextBox1.Text != "")
{
if (rdupldeddate.Checked == true)
{
DataTable dt = adm.GetRecordsByUploadedDate(user, TextBox1.Text, desi, selecteduser); //Uploaded date
if (dt.Rows.Count > 0)
{
if (desi == "Supervisor")
{
BtnExport.Visible = true;
GridView2.Visible = true;
GridView1.Visible = false;
GridView2.DataSource = dt;
GridView2.DataBind();
}
else
{
GridView2.Visible = false;
BtnExport.Visible = false;
GridView1.Visible = true;
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
else { lblMsg.Visible = true; GridView1.Visible = false; GridView2.Visible = false; lblMsg.Text = "No Data Present!!!"; }
}
else
{
DataTable dt = adm.GetRecordsByCodedDate(user, TextBox1.Text, desi, selecteduser); //CodedDate
if (dt.Rows.Count > 0)
{
if (desi == "Supervisor")
{
BtnExport.Visible = true;
GridView2.Visible = true;
GridView1.Visible = false;
GridView2.DataSource = dt;
GridView2.DataBind();
}
else
{
GridView2.Visible = false;
BtnExport.Visible = false;
GridView1.Visible = true;
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
else { lblMsg.Visible = true; GridView1.Visible = false; GridView2.Visible = false; lblMsg.Text = "No Data Present!!!"; }
}
}
else { lblMsg.Visible = true; lblMsg.Text = "Please Enter Date!!!"; }
}
我已经采取editindex = 0,而不是-1尝试了所有的possibilties按钮,通过调用我的!的IsPostBack gridview2.databind此外,我已经把我的gridview更新面板也仍然不起作用
在您的GridView2_RowUpdating中,您正在更新数据库上的数据并将GridView2绑定到任何内容。这就是为什么GridView消失。它没有数据显示。点击按钮时获取更新的数据并将其绑定到GridView,这就是为什么它再次显示。当您更新数据时,您应该获取更新后的数据并重新将其重新绑定到您的GridView。
我建议使用DataSet并在调用GridView2.DataBind()之前指定为Datasource。
SqlDataAdapter da = new SqlDataAdapter(cmdstr ,con);
da.SelectCommand.CommandType = CommandType.Text;
da.SelectCommand.Parameters.AddWithValue("@ID", lblEditID.Text);
da.SelectCommand.Parameters.AddWithValue("@Name", txtEditName.Text);
da.SelectCommand.Parameters.AddWithValue("@Salary", txtEditSalary.Text);
da.SelectCommand.Parameters.AddWithValue("@Designation", txtEditDesignation.Text);
da.SelectCommand.Parameters.AddWithValue("@Location", txtEditLocation.Text);
DataSet dsResult = new DataSet();
da.Fill(dsResult);
con.Close();
GridView2.DataSource = dsResult;
GridView.DataBind();
或者更新后通过方法调用按钮中的代码。 试试这个,如果这个工程。
根据您粘贴到评论中的代码,问题在于你的Page_Load
事件处理程序。设置GridViews初始可见性的代码应位于if (!IsPostBack)
块内。
lblMsg.Text = "";
if (!IsPostBack)
{
BindUsers();
// Set the initial visibility of grids here
string desi = Session["Role"].ToString();
if (desi == "Supervisor")
{
GridView2.Visible = true;
GridView1.Visible = false;
ddlusers.Visible = true;
BtnExport.Visible = false;
}
else
{
GridView2.Visible = false;
GridView1.Visible = true;
ddlusers.Visible = false;
BtnExport.Visible = false;
}
}
在第一次加载页面时为这些网格设置了可见性后,该设置将由ViewState在回发期间维护。从那时起,看起来你的控制事件正在管理网格的可见性(根据是否有结果显示等)。
必要的控制,但我仍然面临同样的问题 – abc
你有'Page_Load'中的任何代码来设置这两个GridView的可见性吗?如果是这样,你可以显示该代码吗? – jadarnel27
下面是我的页面加载代码lblMsg.Text =“”; if(!IsPostBack) { BindUsers(); } string desi = Session [“Role”]。ToString(); if(desi ==“Supervisor”) { GridView2.Visible = true; GridView1.Visible = false; ddlusers.Visible = true; BtnExport.Visible = false; } else { GridView2.Visible = false; GridView1.Visible = true; ddlusers.Visible = false; BtnExport。Visible = false; } – abc
根据指定我隐藏网格和页面加载 – abc