У нас есть простой вид сетки asp.net, который показывает некоторые данные и ImageButton для редактирования данных.Установите поля текстового поля со значениями внутри диалогового окна jquery
После нажатия кнопки ImageButton мы вызываем событие RowCommand
(событие на стороне сервера), чтобы разрешить редактирование данных. К сожалению, редактирование данных происходит в виде назначения значений элементам управления текстовыми полями, которые находятся внутри диалогового окна jquery.
Теперь некоторый код, чтобы помочь вам понять:
В сетке просмотра события rowcommand:
protected void gvActions_RowCommand(object sender, GridViewCommandEventArgs e)
{
var db = new DataClasses1DataContext();
GridViewRow row = (GridViewRow)((Control)e.CommandSource).NamingContainer;
switch (e.CommandName)
{
case "Edit":
//wants to edit an action item
hdnOpenDialogActions.Value = "1";
////set the fields to what is inside the grid
Label id = (Label)row.FindControl("lblIssueActionID");
var rec = db.IssueActions.Single(x => x.IssueActionID == Convert.ToInt32(id.Text));
if (rec == null)
return;
//assign textboxes that are located inside of a jquery grid.
lblIssueActionID.Text = id.Text; //assign ID of action item
lblDialogOpenDateValue.Text = rec.OpenDate.ToShortDateString();
txtDialogTargetDateValue.Text = rec.TargetDate.ToShortDateString();
txtDialogClosedDateValue.Text = rec.ClosedDate.ToString();
hdnActionText.Value = rec.IssueAction1;
txtActionHTML.Value = rec.IssueActionHTML;
hdnActionResolutionText.Value = rec.IssueActionResolution;
txtActionResolutionHTML.Value = rec.IssueActionResolutionHTML;
hdnResponsibleValue.Value = rec.ResponsibleID.ToString();
lblResponsibleValue.Text = rec.ResponsibleContact.FullName;
break;
}
}
hdnOpenDialogActions
используется для обеспечения диалога открыт. Вот некоторые из JQuery, как вы видите, первоначально я скрыть:
$("#dialogActions").hide();
$("#dialogActions").dialog({
autoOpen: false,
appendTo: "form:first",
width: 'auto',
height: 'auto',
modal: true,
open: function (event, ui) {
$('#dialogActions').css('overflow', 'hidden'); //this line does the actual hiding
},
close: function (event, ui) {
//if someone x's out (Closes the dialog) we better make sure we
//set the hidden field to 0 so that the dialog doesn't open up again on post back
$("#MainContent_hdnOpenDialogActions").val("0");
}
});
Вот функция, которая держит его открытым (когда я установить скрытое поле к 1 это означает открыть диалоговое окно):
if ($("#MainContent_hdnOpenDialogActions").val() === "1") {
$("#dialogActions").dialog("open");
$("#MainContent_txtActionHTML").focus();
} else {
$("#dialogActions").hide();
}
Вот фактическая JQuery сетка (извините за использование таблицы :)):
<asp:UpdatePanel runat="server" ID="UpdatePanel1" UpdateMode="Always" ChildrenAsTriggers="True">
<ContentTemplate>
<div id="dialogActions" title="Issue Owner">
<table>
<tr>
<td class="labelField"><asp:Label ID="lblDBA" runat="server" Text="Open"></asp:Label></td>
<td class="valueField">
<asp:Label ID="lblDialogOpenDateValue" runat="server"></asp:Label>
<asp:Label ID="lblIssueActionID" runat="server" Visible="False"></asp:Label>
<asp:HiddenField ID="HiddenField1" runat="server" />
</td>
<td class="labelField">
<asp:Label ID="lblDRegion0" runat="server" Text="Responsible:"></asp:Label>
</td>
<td class="valueField">
<asp:Label ID="lblResponsibleValue" runat="server" ToolTip="Responsible"></asp:Label>
<asp:HyperLink ID="hlOpenResponsible" runat="server" NavigateUrl="#" Text="<img src="../../Images/edit.png" alt="Click to edit."/>" ToolTip="Click to change user reports to..."></asp:HyperLink> | <asp:HyperLink ID="hlClearResponsible" runat="server" NavigateUrl="#" Text="<img src="../../Images/delete.png" alt="Click to clear selection."/>" ToolTip="Click to clear selection."></asp:HyperLink>
<asp:HiddenField ID="hdnResponsibleValue" runat="server" />
<asp:HiddenField ID="hdnOpenResponsible" runat="server" Value="0" />
</td>
</tr>
<tr>
<td class="labelField">
<asp:Label ID="lblDRegion" runat="server" Text="Target:"></asp:Label>
</td>
<td class="valueField">
<asp:TextBox ID="txtDialogTargetDateValue" runat="server" CssClass="datePicker"></asp:TextBox>
</td>
<td class="labelField"><asp:Label ID="lblDPMIssue" runat="server" Text="Closed:"></asp:Label></td>
<td class="valueField">
<asp:TextBox ID="txtDialogClosedDateValue" runat="server" CssClass="datePicker"></asp:TextBox>
</td>
</tr>
<tr>
<td class="labelField">
<asp:Label ID="lblDPMIssue0" runat="server" Text="Action:"></asp:Label>
</td>
<td class="valueField" colspan="3">
<textarea id="txtActionHTML" runat="server" class="tinyeditor" cols="5" rows="5" title="Enter the action item."></textarea><asp:HiddenField ID="hdnActionText" runat="server" />
<asp:HiddenField ID="hdnActionHTML" runat="server" />
</td>
</tr>
<tr>
<td class="labelField">
<asp:Label ID="lblDPMIssue1" runat="server" Text="Resolution:"></asp:Label>
</td>
<td class="valueField" colspan="3">
<textarea id="txtActionResolutionHTML" runat="server" class="tinyeditor" cols="5" rows="5" title="Enter the action item resolution."></textarea><asp:HiddenField ID="hdnActionResolutionText" runat="server" />
<asp:HiddenField ID="hdnActionResolutionHTML" runat="server" />
</td>
</tr>
<tr>
<td class="labelField" colspan="4">
<asp:Button ID="btnSaveAction" runat="server" Text="Submit" OnClientClick="SubmitContent();" ToolTip="Submit/Save changes?" OnClick="btnSaveAction_Click" />
</td>
</tr>
</table>
</div>
</ContentTemplate>
</asp:UpdatePanel>
я поставил точку останова, и я могу видеть, установив код в текстовых полях, но как только диалог открывает все на самом деле не обновляется , Текстовые поля пусты и т. Д., Хотя код позади показывает, что они получают значения.
Мои навыки переднего конца довольно плохие, поэтому, если кто-то может сообщить мне, почему это происходит (может быть, это связано с тем, что это управление на стороне сервера, и это вызывает сообщение после события команды row)?
У вас есть это завернутое в UpdatePanel случайно? – macoms01
Ну, я думаю, вопрос в том, должен ли я обернуть его в панель обновления или оставить его вне пакета обновления. Кажется, я попробовал обернуть его в панель обновления, но, возможно, я сделал эту часть неправильно. – JonH
Причина, по которой я спрашивал, состоит в том, что кажется, что панель обновления (если вы ее используете) не обновляется, когда сервер отправляет данные клиенту. Если вы можете отлаживать код позади и видеть, что значения устанавливаются, но веб-страница не отображает их, я думаю, что вы должны делать что-то асинхронно ... Есть ли в настоящее время панель обновления, обернутая вокруг этого html? – macoms01