C# 如何在asp.net 4.0中更新行时从控件获取新值
我在行更新方面有一个小问题。我现在正在使用可编辑网格视图,在行更新时,我遇到了一个问题,我无法从控件中获取新值。我在所有网站上搜索这个问题,我发现了这个 但是,我将这些设置为行更新:C# 如何在asp.net 4.0中更新行时从控件获取新值,c#,asp.net,C#,Asp.net,我在行更新方面有一个小问题。我现在正在使用可编辑网格视图,在行更新时,我遇到了一个问题,我无法从控件中获取新值。我在所有网站上搜索这个问题,我发现了这个 但是,我将这些设置为行更新: protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { ........... Session["StartAlpha"] = "All";
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
...........
Session["StartAlpha"] = "All";
Session["GroupByENTYPE"] = -1;
Session["ColumnName"] = null;
Session["SearchtText"] = null;
this.FillGrid((String)Session["StartAlpha"] ?? null, (int)Session["GroupByENTYPE"], (String)Session["ColumnName"] ?? null, (String)Session["SearchText"] ?? null);
}
}
protected void GV_ViewCustomers_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = GV_ViewCustomers.Rows[e.RowIndex];
int customerid = Convert.ToInt32(GV_ViewCustomers.DataKeys[e.RowIndex].Value.ToString());
if (!string.IsNullOrEmpty(e.NewValues["Name"].ToString()) && !e.NewValues["type_id"].ToString().Equals("-1"))
{
using (DataClassesDataContext db = new DataClassesDataContext())
{
string owname = null, ownmono = null, room = null, build = null, road = null, area = null, city = null, mobile = null, phone = null, email = null, cpname = null, cpmono = null, remark = null;
bool? UserOFC = null, UserVAT = null, UserINV = null, UserNone = null;
int? country_id = null, state_id = null;
if (!string.IsNullOrEmpty(e.NewValues["Ownername"].ToString().Trim()))
{
owname = e.NewValues["Ownername"].ToString().Trim();
}
if (!string.IsNullOrEmpty(e.NewValues["Ownermob"].ToString().Trim()))
{
ownmono = e.NewValues["Ownermob"].ToString().Trim();
}
if (!string.IsNullOrEmpty(e.NewValues["ContactPerson"].ToString().Trim()))
{
cpname = e.NewValues["ContactPerson"].ToString().Trim();
}
if (!string.IsNullOrEmpty(e.NewValues["ContactPersonmob"].ToString().Trim()))
{
cpmono = e.NewValues["ContactPersonmob"].ToString().Trim();
}
if (!string.IsNullOrEmpty(e.NewValues["Phone"].ToString().Trim()))
{
phone = e.NewValues["Phone"].ToString().Trim();
}
if (!string.IsNullOrEmpty(e.NewValues["Mobile"].ToString().Trim()))
{
mobile = e.NewValues["Mobile"].ToString().Trim();
}
if (!string.IsNullOrEmpty(e.NewValues["Room"].ToString().Trim()))
{
room = e.NewValues["Room"].ToString().Trim();
}
if (!string.IsNullOrEmpty(e.NewValues["Build"].ToString().Trim()))
{
build = e.NewValues["Build"].ToString().Trim();
}
if (!string.IsNullOrEmpty(e.NewValues["Road"].ToString().Trim()))
{
road = e.NewValues["Road"].ToString().Trim();
}
if (!string.IsNullOrEmpty(e.NewValues["Area"].ToString().Trim()))
{
area = e.NewValues["Area"].ToString().Trim();
}
if (!string.IsNullOrEmpty(e.NewValues["City"].ToString().Trim()))
{
city = e.NewValues["City"].ToString().Trim();
}
if (!e.NewValues["country_id"].ToString().Equals("-1"))
{
country_id = int.Parse(e.NewValues["country_id"].ToString());
}
if (!e.NewValues["state_id"].ToString().Equals("-1"))
{
state_id = int.Parse(e.NewValues["state_id"].ToString());
}
if (!string.IsNullOrEmpty(e.NewValues["Email"].ToString().Trim()))
{
email = e.NewValues["Email"].ToString().Trim();
}
if (!string.IsNullOrEmpty(e.NewValues["Remark"].ToString().Trim()))
{
remark = e.NewValues["Remark"].ToString().Trim();
}
UserOFC = bool.Parse(e.NewValues["UserOFC"].ToString());
UserVAT = bool.Parse(e.NewValues["UserVAT"].ToString());
UserINV = bool.Parse(e.NewValues["UserINV"].ToString());
UserNone = bool.Parse(e.NewValues["UserNone"].ToString());
db.UpdateParty(e.NewValues["Name"].ToString().Trim(), int.Parse(e.NewValues["type_id"].ToString()), owname, ownmono, room, build, road, area, city, phone, mobile, email, cpname, cpmono, UserOFC, UserVAT, UserINV, UserNone, state_id, country_id, remark, db.Users.Where(u => u.Username.Equals((String)Session["Username"])).Select(u => u.Ref_no).FirstOrDefault(), customerid);
db.SubmitChanges();
GV_ViewCustomers.EditIndex = -1;
this.FillGrid((String)Session["StartAlpha"] ?? null, (int)Session["GroupByENTYPE"], (String)Session["ColumnName"] ?? null, (String)Session["SearchText"] ?? null);
UpdatePanel10.Update();
MPE.Show();
}
}
}
protected void GV_ViewCustomers_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowState == DataControlRowState.Edit)
{
using (DataClassesDataContext db = new DataClassesDataContext())
{
DropDownList dl = (DropDownList)e.Row.FindControl("DDL_Types1");
dl.DataSource = db.PartyTypes.Select(t => t).ToList();
dl.DataBind();
dl.SelectedValue = DataBinder.Eval(e.Row.DataItem, "type_id").ToString();
DropDownList dl1 = (DropDownList)e.Row.FindControl("DDL_CountryNames1");
dl1.DataSource = db.Countries.Select(c => c).ToList();
dl1.DataBind();
if (!string.IsNullOrEmpty(DataBinder.Eval(e.Row.DataItem, "country_id").ToString()))
{
dl1.SelectedValue = DataBinder.Eval(e.Row.DataItem, "country_id").ToString();
DropDownList dl2 = (DropDownList)e.Row.FindControl("DDL_StateNames1");
dl2.DataSource = db.States.Where(s => s.country_id.Equals(int.Parse(DataBinder.Eval(e.Row.DataItem, "country_id").ToString()))).Select(s => s).ToList();
dl2.DataBind();
}
DataRowView rowView1 = (DataRowView)e.Row.DataItem;
if (rowView1["UserOFC"] != null)
{
(e.Row.FindControl("chk_UserOFC1") as CheckBox).Checked = Convert.ToBoolean(e.Row.DataItem.Equals("UserOFC").ToString());
}
if (rowView1["UserVAT"] != null)
{
(e.Row.FindControl("chk_UserVAT1") as CheckBox).Checked = Convert.ToBoolean(e.Row.DataItem.Equals("UserVAT").ToString());
}
if (rowView1["UserINV"] != null)
{
(e.Row.FindControl("chk_UserINV1") as CheckBox).Checked = Convert.ToBoolean(e.Row.DataItem.Equals("UserINV").ToString());
}
if (rowView1["UserNone"] != null)
{
(e.Row.FindControl("chk_UserNone1") as CheckBox).Checked = Convert.ToBoolean(e.Row.DataItem.Equals("UserNone").ToString());
}
}
}
}
更新
这是我的第二个网格视图aspx标记:
<asp:UpdatePanel ID="UpdatePanel18" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:GridView ID="GV_ViewReasons" runat="server" AllowPaging="True"
AllowSorting="True" AutoGenerateColumns="False" CellPadding="4" ShowFooter="True"
GridLines="None" Width="100%"
DataKeyNames="Id" onrowcommand="GV_ViewReasons_RowCommand" onrowdatabound="GV_ViewReasons_RowDataBound"
onsorting="GV_ViewReasons_Sorting"
ondatabound="GV_ViewReasons_DataBound"
onpageindexchanging="GV_ViewReasons_PageIndexChanging"
onprerender="GV_ViewReasons_PreRender"
onrowediting="GV_ViewReasons_RowEditing"
onrowupdating="GV_ViewReasons_RowUpdating"
onrowcancelingedit="GV_ViewReasons_RowCancelingEdit"
onrowdeleting="GV_ViewReasons_RowDeleting" HorizontalAlign="Left">
<RowStyle CssClass="grid" HorizontalAlign="Left" />
<Columns>
<asp:TemplateField>
<EditItemTemplate>
<asp:ImageButton ID="imgbtnUpdate" CommandName="Update" runat="server" ImageUrl="../images/1366376844_001_06.gif" ToolTip="Update" Height="20px" Width="20px" ValidationGroup="EditCharge" CausesValidation="false"/>
<asp:ImageButton ID="imgbtnCancel" runat="server" CommandName="Cancel" ImageUrl="../images/1366376484_001_05.png" ToolTip="Cancel" Height="20px" Width="20px" />
</EditItemTemplate>
<FooterTemplate>
<asp:ImageButton ID="imgbtnAdd" runat="server" ImageUrl="../images/1398687211_plus-sign.png"
CommandName="AddNew" Width="24px" Height="24px" ToolTip="Add new reason"
ValidationGroup="AddNewReason" CausesValidation="false"/>
</FooterTemplate>
<ItemTemplate>
<table>
<tr>
<td><asp:ImageButton ID="imgbtnEdit" CommandName="Edit" runat="server" ImageUrl="../images/1366376599_001_45.png" ToolTip="Edit" Height="20px" Width="20px" /></td>
<td><asp:ImageButton ID="imgbtnDelete" CommandName="Delete" Text="Edit" runat="server" ImageUrl="../images/1366377028_Cancel.png" ToolTip="Delete" Height="20px" Width="20px" /></td>
</tr>
</table>
</ItemTemplate>
<HeaderStyle CssClass="headinglist_bg" HorizontalAlign="Left" />
<ItemStyle HorizontalAlign="Left" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Reason" SortExpression="ReasonText">
<HeaderStyle CssClass="headinglist_bg" HorizontalAlign="Left" />
<ItemTemplate>
<asp:LinkButton ID="lbut_reason" runat="server"
CommandArgument='<%# Eval("Id") %>' CommandName="Select"
Text='<%# Eval("ReasonText").ToString().Length > 50 ? Eval("ReasonText").ToString().Substring(0,50)+"...":Eval("ReasonText") %>'
ToolTip='<%# Bind("ReasonText") %>'></asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txt_reason1" runat="server" CssClass="input"
ValidationGroup="UpdateReason" Text='<%# Eval("ReasonText") %>'></asp:TextBox>
<ajaxToolkit:TextBoxWatermarkExtender ID="txt_reason1_TextBoxWatermarkExtender"
runat="server" Enabled="True" TargetControlID="txt_reason1"
WatermarkText="Enter reson text">
</ajaxToolkit:TextBoxWatermarkExtender>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ControlToValidate="txt_reason1" Display="None"
ErrorMessage="Reason text is required" SetFocusOnError="True"
ValidationGroup="UpdateReason"></asp:RequiredFieldValidator>
<ajaxToolkit:ValidatorCalloutExtender ID="ValidatorCalloutExtender12"
runat="server" CloseImageUrl="~/images/close.gif"
TargetControlID="RequiredFieldValidator2"
WarningIconImageUrl="~/images/Warning.gif">
</ajaxToolkit:ValidatorCalloutExtender>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txt_reason" runat="server" CssClass="input"
ValidationGroup="AddNewReason"></asp:TextBox>
<ajaxToolkit:FilteredTextBoxExtender ID="txt_reason_FilteredTextBoxExtender"
runat="server" Enabled="True"
FilterType="Custom, UppercaseLetters, LowercaseLetters"
TargetControlID="txt_reason" ValidChars=" ,.">
</ajaxToolkit:FilteredTextBoxExtender>
<ajaxToolkit:TextBoxWatermarkExtender ID="txt_reason_TextBoxWatermarkExtender"
runat="server" Enabled="True" TargetControlID="txt_reason"
WatermarkText="Enter reson text">
</ajaxToolkit:TextBoxWatermarkExtender>
<asp:RequiredFieldValidator
ID="RequiredFieldValidator1"
runat="server"
ErrorMessage="Reason text is required"
ControlToValidate="txt_reason"
ValidationGroup="AddNewReason"
Display="None" SetFocusOnError="True"></asp:RequiredFieldValidator>
<ajaxToolkit:ValidatorCalloutExtender ID="ValidatorCalloutExtender12" runat="server" TargetControlID="RequiredFieldValidator1" WarningIconImageUrl="~/images/Warning.gif" CloseImageUrl="~/images/close.gif" >
</ajaxToolkit:ValidatorCalloutExtender>
</FooterTemplate>
<HeaderTemplate>
<asp:LinkButton ID="lbut_sortreason" runat="server"
CommandArgument="ReasonText" CommandName="Sort" CssClass="normaltext"
Font-Bold="true" Text="Reason"></asp:LinkButton>
<asp:PlaceHolder ID="placeholderreason" runat="server"></asp:PlaceHolder>
</HeaderTemplate>
<ItemStyle CssClass="quicklink" HorizontalAlign="Left" />
</asp:TemplateField>
</Columns>
<EmptyDataRowStyle BorderWidth="0px" Width="0px" HorizontalAlign="Left"/>
<EmptyDataTemplate>
<asp:Label ID="Label2" runat="server" ForeColor="Red"
Text="No Records are found"></asp:Label>
</EmptyDataTemplate>
<PagerStyle CssClass="pager" HorizontalAlign="Left" VerticalAlign="Middle" />
<PagerTemplate>
<table>
<tr>
<td>
<asp:ImageButton ID="ImageButton5" runat="server"
AlternateText="Go to First Page" CommandArgument="First" CommandName="Page"
ImageUrl="../images/1330128819_resultset_first.png" />
</td>
<td>
<asp:ImageButton ID="ImageButton6" runat="server" AlternateText="Previous Page"
CommandArgument="Prev" CommandName="Page"
ImageUrl="../images/1330128981_resultset_previous.png" />
</td>
<td>
Page <asp:DropDownList ID="ddlPages1" runat="server" AutoPostBack="True"
Width="50px" onselectedindexchanged="ddlPages1_SelectedIndexChanged">
</asp:DropDownList>
of
<asp:Label ID="lblPageCount1" runat="server"></asp:Label>
</td>
<td>
<asp:ImageButton ID="ImageButton7" runat="server" AlternateText="Next Page"
CommandArgument="Next" CommandName="Page"
ImageUrl="../images/Farm-Fresh_resultset_next.png" />
</td>
<td>
<asp:ImageButton ID="ImageButton9" runat="server"
AlternateText="Go to Last Page" CommandArgument="Last" CommandName="Page"
ImageUrl="../images/1330128876_resultset_last.png" />
</td>
</tr>
</table>
</PagerTemplate>
<FooterStyle CssClass="pager" VerticalAlign="Bottom" />
</asp:GridView>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="GV_ViewReasons" EventName="RowCommand"/>
<asp:AsyncPostBackTrigger ControlID="GV_ViewReasons" EventName="RowUpdating" />
<asp:AsyncPostBackTrigger ControlID="GV_ViewReasons" EventName="RowDeleting" />
</Triggers>
</asp:UpdatePanel>
页
属于
Shal,您编写的用于绑定网格的代码不是Postback吗?请参阅关于GridViewUpdateEventArgs。NewValues
只需调用grid Bind方法,就可以用更新的值绑定gridview。@Grundy ya我更新了我的问题,只需再次查看即可。@Shal,您能提供FillGrid
函数吗?您在e.NewValues
中看到值了吗?它更正了新的值,而您在客户端上看不到更改?