文本框和按钮文本属性未在更新面板内的网格视图行命令上更新



我可能很胖,但由于某种原因,我无法从代码后面更新asp:textbox和asp:button的文本。文本框&按钮在引导模式中。我调用代码是为了从gridview的rowcommand事件中更新text属性。

当我遍历代码时,它会发现文本框&按钮,并表示已更新文本属性,但当呈现页面时,文本框中没有文本。我确信我错过了一些简单的东西,但它让我困惑

我也在模态中使用了ckeditor,以防有任何不同。

这是我的rowcommand事件代码:

protected void grdServices_RowCommand(object sender, GridViewCommandEventArgs e)
{
if(e.CommandName == "EditTreatment")
{
int treatmendid;
if(int.TryParse(e.CommandArgument.ToString(), out treatmendid) == true)
{
var x = srvLogic.GetServiceById(treatmendid).AsEnumerable().FirstOrDefault();
if(x != null)
{                                      
txtNewTreatmentName.Text = x.Field<string>("ServiceName");                        
btnAddServ.Text = "Update treatment info";
}
}
}
}

这是我在aspx页面上的标记:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<div class="row">
<div class="col">
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<h2 class="text-center">Select treatment category</h2>
<asp:DropDownList ID="drpServCats" AutoPostBack="true" OnSelectedIndexChanged="drpServCats_SelectedIndexChanged" Font-Bold="true" runat="server" CssClass="form-control d-block mx-auto bg-dark"></asp:DropDownList>
<h3 class="text-center">Current treatments</h3>

<asp:GridView ID="grdServices" OnRowCommand="grdServices_RowCommand" AutoGenerateColumns="false" CssClass="table table-borderless table-responsive-md" BorderStyle="None" runat="server" AllowPaging="true" OnPageIndexChanging="grdServices_PageIndexChanging" OnRowDeleting="grdServices_RowDeleting" PagerSettings-Mode="NumericFirstLast">
<Columns>
<asp:TemplateField HeaderText="Treatment name" AccessibleHeaderText="Treatment name">
<ItemTemplate>
<%#Eval("ServiceName") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtServiceName" runat="server" Text='<%#Eval("ServiceName") %>' MaxLength="500" CssClass="form-control" TextMode="SingleLine"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField AccessibleHeaderText="Treatment price" HeaderText="Treatment price">
<ItemTemplate>
<%#Eval("ServiceCost") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtServiceCost" runat="server" Text='<%#Eval("ServiceCost") %>' MaxLength="15" CssClass="form-control" TextMode="SingleLine"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField AccessibleHeaderText="Timely link" HeaderText="Timely link">
<ItemTemplate>
<a href='<%# Eval("ServiceTimelyLink") %>' target="_blank"><%# Eval("ServiceTimelyLink") %></a>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtTimely" runat="server" CssClass="form-control" TextMode="SingleLine" MaxLength="2083" Text='<%# Eval("ServiceTimelyLink") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Treatment Short Description" AccessibleHeaderText="Treatment short description">
<ItemTemplate>
<%# Eval("ServiceShortDescription") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtShortDesc" runat="server" Text='<%# Eval("ServiceShortDescription") %>' CssClass="form-control" MaxLength="500" TextMode="SingleLine"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Treatment detailed description" AccessibleHeaderText="Treatment detailed description">
<ItemTemplate>
<%# Eval("ServiceLongDescription") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtLongDesc" runat="server" Text='<%# Eval("ServiceLongDescription") %>' CssClass="form-control" TextMode="MultiLine"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField ShowHeader="False">                                
<ItemTemplate>
<asp:Button runat="server" Text="Edit" CommandName="EditTreatment" CommandArgument='<%#Eval("ServiceId") %>' ID="LinkButton1"  data-toggle="modal" data-target="#myTreatmentModal"></asp:Button>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<input type="button" id="btnAddTreatment" value="Add new treatment" class="d-block mx-auto btn-outline-light"  data-toggle="modal" data-target="#myTreatmentModal" />
</ContentTemplate>                
</asp:UpdatePanel>
</div>
</div>

<div class="modal text-white bg-dark" id="myTreatmentModal">
<div class="modal-dialog  modal-lg">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<h4 class="modal-title">Add a new treatment</h4>          
</div>
<!-- Modal body -->
<div class="modal-body">
<div class="container-fluid">
<div class="row">
<div class="col">
<asp:Label ID="lblNewTreatmentName" runat="server" AssociatedControlID="txtNewTreatmentName" Text="Treatment name"></asp:Label>
<asp:RequiredFieldValidator ID="rqNewTreatmentName" runat="server" ErrorMessage="*" ForeColor="Red" ValidationGroup="vldNewTreatment" ControlToValidate="txtNewTreatmentName" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:TextBox ID="txtNewTreatmentName" runat="server" CssClass="form-control" TextMode="SingleLine" ValidationGroup="vldNewTreatment"></asp:TextBox>
<br />
<asp:Label ID="lblNewTreatmentShortDesc" runat="server" AssociatedControlID="txtNewTreatmentShortDesc" Text="Price"></asp:Label>
<asp:RequiredFieldValidator ID="rqNewTreatmentShortDesc" runat="server" ErrorMessage="*" ForeColor="Red" ValidationGroup="vldNewTreatment" ControlToValidate="txtNewTreatmentName" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:TextBox ID="txtNewTreatmentShortDesc" runat="server" CssClass="form-control" TextMode="SingleLine" ValidationGroup="vldNewTreatment"></asp:TextBox>
<br />
<asp:Label ID="lblNewTreatmentPrice" runat="server" AssociatedControlID="txtNewTreatmentPrice" Text="Treatment price"></asp:Label>
<asp:RequiredFieldValidator ID="rqNewTreatmentPrice" runat="server" ErrorMessage="*" ForeColor="Red" ValidationGroup="vldNewTreatment" ControlToValidate="txtNewTreatmentPrice" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:TextBox ID="txtNewTreatmentPrice" runat="server" CssClass="form-control" TextMode="SingleLine" MaxLength="15" ValidationGroup="vldNewTreatment"></asp:TextBox>
<br />
<asp:Label ID="lblNewTreatmentLink" runat="server" AssociatedControlID="txtNewTreatmentPrice" Text="Timely link"></asp:Label>
<asp:RequiredFieldValidator ID="rqNewTreatmentLink" runat="server" ErrorMessage="*" ForeColor="Red" ValidationGroup="vldNewTreatment" ControlToValidate="txtNewTreatmentLink" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:TextBox ID="txtNewTreatmentLink" runat="server" CssClass="form-control" TextMode="SingleLine" MaxLength="2083" ValidationGroup="vldNewTreatment"></asp:TextBox>
<br />
<asp:Label ID="lblNewTreatmentLongDesc" runat="server" AssociatedControlID="txtNewTreatmentLongDesc" Text="Units in Stock"></asp:Label>                           
<asp:TextBox ID="txtNewTreatmentLongDesc" runat="server" CssClass="form-control" TextMode="Number" ValidationGroup="vldNewTreatment"></asp:TextBox>
<br />

</div>
</div></div>
</div>
<!-- Modal footer -->
<div class="modal-footer">   
<div class="container-fluid">
<div class="row">
<div class="col">
<asp:Button ID="btnAddServ" runat="server" CssClass="btn-outline-light mx-auto" OnClick="btnAddServ_Click" ValidationGroup="vldNewTreatment" Text="Add new treatment" />
<asp:Button ID="btnCancelProdSize" runat="server" Text="Cancel" data-dismiss="modal" CssClass="btn-outline-light mx-auto" />
</div>
</div>                
</div>         

</div>
</div>
</div>
</div>
<script type="text/javascript">
// enable plugin
CKEDITOR.plugins.addExternal('base64image', '/ckplugins/base64image-master/', 'plugin.js');
CKEDITOR.plugins.addExternal('autogrow', '/ckplugins/autogrow/', 'plugin.js');
CKEDITOR.plugins.addExternal('dialog', '/ckplugins/dialog/', 'plugin.js');
CKEDITOR.plugins.addExternal('dialogui', '/ckplugins/adialogui/', 'plugin.js');
CKEDITOR.plugins.addExternal('image2', '/ckplugins/image2/', 'plugin.js');
CKEDITOR.plugins.addExternal('imageresponsive', '/ckplugins/imageresponsive/', 'plugin.js');
CKEDITOR.plugins.addExternal('lineutils', '/ckplugins/lineutils/', 'plugin.js');
CKEDITOR.plugins.addExternal('widget', '/ckplugins/widget/', 'plugin.js');
CKEDITOR.plugins.addExternal('widgetselection', '/ckplugins/widgetselection/', 'plugin.js');
CKEDITOR.plugins.addExternal('imageresize', '/ckplugins/imageresize/', 'plugin.js');
CKEDITOR.plugins.addExternal('table', '/ckplugins/table/', 'plugin.js');
CKEDITOR.plugins.addExternal('bt_table', '/ckplugins/bt_table/', 'plugin.js');
CKEDITOR.plugins.addExternal('youtubebootstrap', '/ckplugins/youtubebootstrap/', 'plugin.js');
CKEDITOR.plugins.addExternal('btgrid', '/ckplugins/btgrid/', 'plugin.js');
CKEDITOR.plugins.addExternal('templates', '/ckplugins/templates/', 'plugin.js');
// extraPlugins needs to be set too.
CKEDITOR.replace('<%= txtNewTreatmentLongDesc.ClientID %>', {
extraPlugins: 'autogrow,dialog,dialogui,image2,lineutils,widget,widgetselection,imageresize,table,bt_table,youtubebootstrap,btgrid,base64image'
});
CKEDITOR.config.removePlugins = 'flash,save,print,forms';
CKEDITOR.config.skin = 'minimalist,/ckskins/minimalist/';
</script>

根据要求,这里是我的页面加载代码:

protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
string currentUser = HttpContext.Current.User.Identity.Name.ToString();
int userrole = userLogic.getCurUserRole(currentUser);
if (userrole != 1)
{
Response.Redirect(@"~/");
}
else
{
GetCats();
int ct;
if(int.TryParse(drpServCats.SelectedValue, out ct) == true)
{
GetTreatments(ct);
}
}
}
}

这里还有我首先用来获取数据的代码:

protected void GetTreatments(int cat)
{
Session["CAT"] = cat;
var dt = srvLogic.GetServicesByCat(cat);
if(dt != null)
{            
grdServices.DataSource = dt;
grdServices.DataBind();
dt.Dispose();
}
}

最后我可以;没有解决它,所以我只是一起取消了它,只是对按钮的点击事件做出了回应:

protected void LinkButton1_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
int treatmendid;
if (int.TryParse(btn.CommandArgument.ToString(), out treatmendid) == true)
{
var x = srvLogic.GetServiceById(treatmendid).AsEnumerable().First();
if (x != null)
{
txtNewTreatmentName.Text = x.Field<string>("ServiceName");
txtNewTreatmentShortDesc.Text = x.Field<string>("ServiceShortDescription");
txtNewTreatmentPrice.Text = x.Field<string>("ServiceCost");
txtNewTreatmentLink.Text = x.Field<string>("ServiceTimelyLink");
txtNewTreatmentLongDesc.Text = x.Field<string>("ServiceLongDescription");
btnAddServ.Text = "Update treatment info";
btnAddServ.ToolTip = x.Field<int>("ServiceId").ToString();
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "success", "$('#myTreatmentModal').modal('show');", true);
}
}
}

这完全没有问题。

最新更新