繁体   English   中英

ASP SqlDataSource更新-部分页面回发的AJAX?

[英]ASP SqlDataSource UPDATE - AJAX for partial page post back?

我在处理一个div与click事件 -上div点击,通话通过按钮ID

$('#myDiv').on('click', (function(clickEvent) {
  document.getElementById("Button1").click();
}))

这是ASP按钮标记:

<asp:Button ID="Button1" runat="server" OnClick="my_ClickEvent" Text="Button" CssClass="hide" />

这是背后的代码:

protected void my_ClickEvent(object sender, EventArgs e)
{
  SqlDataSource1.UpdateParameters["OwnerName"].DefaultValue = "Some Name";
  SqlDataSource1.Update();
  Response.Redirect(Request.Url.AbsoluteUri);
}

这是div标记:

<form id="form1" runat="server">
  <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
  <asp:Timer ID="Timer1" runat="server" Interval="200000" OnTick="Timer1_Tick" Enabled="True" />
  <div class="square" id="myDiv" runat="server">
    <div class="content">
      <div>
        <p id="ImUnavailable">Unavailable for Dispatch</p>
        <div class="table">
          <div class="table-cell">
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
              <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
              </Triggers>
              <ContentTemplate>
                <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataSourceID="SqlDataSource1" CssClass="Grid" RowStyle-HorizontalAlign="Center" DataKeyNames="PhysicalAddress">
                  <Fields>
                    <asp:BoundField DataField="OwnerName" HeaderText="OwnerName" ShowHeader="False" SortExpression="OwnerName">
                      <ControlStyle BorderStyle="None" />
                      <ItemStyle BorderStyle="None" />
                    </asp:BoundField>
                    <asp:BoundField DataField="Building" HeaderText="Building" ShowHeader="False" SortExpression="Building" ItemStyle-CssClass="building">
                      <ControlStyle BorderStyle="None" />
                      <ItemStyle BorderStyle="None" />
                    </asp:BoundField>
                    <asp:BoundField DataField="TimeOn" HeaderText="TimeOn" ShowHeader="False" SortExpression="TimeOn">
                      <ControlStyle BorderStyle="None" />
                      <ItemStyle BorderStyle="None" />
                    </asp:BoundField>
                    <asp:BoundField DataField="IPAddress" HeaderText="IPAddress" ShowHeader="False" SortExpression="IPAddress" ItemStyle-CssClass="hide">
                      <ControlStyle BorderStyle="None" />
                      <ItemStyle BorderStyle="None" />
                    </asp:BoundField>
                    <asp:BoundField DataField="PhysicalAddress" HeaderText="PhysicalAddress" ShowHeader="False" ReadOnly="True" SortExpression="PhysicalAddress" ItemStyle-CssClass="hide">
                      <ItemStyle CssClass="hide" />
                    </asp:BoundField>
                    <asp:BoundField DataField="Available" HeaderText="Available" ShowHeader="False" SortExpression="Available" ItemStyle-CssClass="hide">
                      <ItemStyle CssClass="hide" />
                    </asp:BoundField>
                  </Fields>
                  <RowStyle HorizontalAlign="Center" />
                </asp:DetailsView>
              </ContentTemplate>
            </asp:UpdatePanel>
          </div>
        </div>
      </div>
    </div>
  </div>

如您所见,我将DetailsView包裹在 ,该Timer间隔触发器上更新。 当计时器达到其间隔时, 将回发到数据库,并且DetailsView保持最新。 这发生在 ,因此页面本身未刷新。

我不确定如何通过div点击来实现这一点。 我试图单击div ,调用ASP按钮,更新SqlDataSource ,所有这些都没有刷新整个页面。 div click事件现在可以使用了,但是没有使用 在为此寻找解决方案时,我有点困惑,比如我缺少一些简单的东西。

任何建议表示赞赏。 谢谢!

编辑

因此,我创建了一个单独的UpdatePanel并对其进行了结构化……当我单击Button1时,它仍刷新整个页面……

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"/> 
<asp:UpdatePanel ID="UpdatePanel7" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional">
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
        </Triggers>
        <ContentTemplate>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ...
            </asp:SqlDataSource>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="my_Click" />
<asp:Button ID="Button2" runat="server" Text="Button" OnClick="you_Click" />
        </ContentTemplate>
    </asp:UpdatePanel>

我要做的就是单击Button1时更新SQL表中的列。 它可以工作,但是会刷新页面。

再次感谢

我查看了上面发布的事件输出,并回答了自己的问题。

我将后台代码更改为:

protected void my_Click(object sender, EventArgs e) {SqlDataSource1.UpdateParameters["OwnerName"].DefaultValue = "My Name";SqlDataSource1.Update();}

...当然,我也不再称为Response.Redirect。 现在它正在按预期工作。

谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM