根据代码隐藏/ ASP.net中的用户输入显示模态对话框/确认框

时间:2015-07-08 19:14:36

标签: javascript c# jquery asp.net

我有一个网格视图,包含一个文本框,并为网格视图中的每一行下拉。 我想要一个确认对话框,以显示当用户在文本框中输入值时,如果它与每个行的相应标签的值不匹配,则会显示该值。

前端

var_cat2

调试时我发现在本地计算机上工作的是<asp:TemplateField HeaderText="Payment Amount"> <ItemTemplate> <asp:Label ID="lblSuggestedAmount" runat="server"></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Actual Payment Amount"> <ItemTemplate> <asp:TextBox ID="txtbxActualAmount" Visible="true" runat="server"></asp:TextBox> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="For Rental Month"> <ItemTemplate> <asp:DropDownList ID="ddlPaymentMonth" Visible="true" runat="server"></asp:DropDownList> </ItemTemplate> </asp:TemplateField> 但是当我将项目上传到IIS时,提示不会出现。

代码背后

System.Windows.Forms.MessageBox.Show()

我理解,因为对话框显示在客户端,运行代码的对话框显示在服务器上,而不是客户端浏览器上。

从阅读other similar questions开始,我也理解我需要通过JavaScript实现这一目标。
我想我会将TextBox actualAmount = (TextBox)gvPayments.Rows[i].FindControl("txtbxActualAmount"); Label suggestedAmount = (Label)gvPayments.Rows[i].FindControl("lblSuggestedAmount"); if (Convert.ToDouble(actualAmount.Text) != Convert.ToDouble(suggestedAmount.Text)) { System.Windows.Forms.DialogResult dr = System.Windows.Forms.MessageBox.Show("Some payments have actual payment amounts greater than the suggested amount. Is this correct?", "Warning", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Warning, System.Windows.Forms.MessageBoxDefaultButton.Button1, System.Windows.Forms.MessageBoxOptions.ServiceNotification); if (dr == System.Windows.Forms.DialogResult.No) { return; } else { actualAmount.BackColor = Color.White; } } 事件附加到我的更新/提交按钮,但是javascript可以循环遍历gridview的行,比较OnClickLabel.text并将该文本框背景颜色设置为黄色并显示我的对话框?然后,一旦用户点击确定,它是否会继续执行其余的代码隐藏执行?

2 个答案:

答案 0 :(得分:0)

首先,你不能在asp.net应用程序上使用Windows.Forms,记住UI是在客户端计算机的浏览器中运行的,你编写的代码正在上运行服务器方面,在不同的计算机......

您有两种方法可以实现目标:

  1. 简短,性能不佳:在响应结束时添加javascript函数,javascript将在浏览器中显示确认框,但所有逻辑仍然写在代码后面,这是通过调用 ClientScript.RegisterClientScriptBlock

    RegisterClientScriptBlock(this.GetType(),
        "confirmmsg",
        "<script> if(Confirm('do you want to proceed')) forms.submit();</script>");
    
  2. 漫长而最好的方式,javascript&amp; jquery可以轻松实现您需要的代码,例如:

    function checkText(txt) {
        var allLables = $("[id*='lblSuggestedAmount']"); //get all the labels in the  grid
        for (var i = 0; i < allLables.length; i++) {
            if (allLabels[i].html() == txt) { 
                txt.style.bakground-color = "yellow";
                if(Confirm("This is message to confirm")) {
                    form1.submit() // what ever you need
                }
            }
        }
    }
    

答案 1 :(得分:0)

首先在前端我添加了一些其他答案提供的JavaScript / jQuery。

前端

asp:Button

并在我的<asp:Button ID="btnUpdateClient" Text="Update Client" OnClientClick="confirmPayment()" OnClick="btnUpdateClientTable_Click" Visible="true" runat="server" /> 中也会触发代码隐藏

string confirm = Request.Form["confirm_value"];
bool paymentErrorFlag = false;

后端

在我的btnUpdateClientTable_Click()方法

我需要

paymentErrorFlag

获取确认对话框的响应。这将是一个&#34;是&#34;或&#34;不&#34;响应。只要在文本框中输入值但未从我的下拉列表中选择值,该标志就会设置为true。

我会循环浏览网格视图中的每一行,并使用.Text == string.Empty的组合以及.SelectedIndex == 0return;上的检查来中断函数和Request.Form[]而不更新数据库。

基本上,关键是import pygame import sys #game stuff pygame.init() screen = pygame.display.set_mode((640, 480),0,32) clock = pygame.time.Clock() #functions def makeText(title,text,posx,posy): font=pygame.font.Font(None,30) scoretext=font.render(str(title)+ ": " +str(text), 1,(0,0,0)) screen.blit(scoretext, (posx, posy)) def clickButton(name,x,y,width,height): if x + width > cur[0] > x and y + height > cur[1] > y: if click == (1,0,0): makeText("score",300,100,10) #objects button1 = pygame.Rect((0,0), (32,32)) while True: screen.fill((255,255,255)) screen.fill((55,155,0), button1) #update display pygame.display.update() clock.tick(60) #event handling for event in pygame.event.get(): if event.type == pygame.QUIT: quit() elif event.type == pygame.MOUSEBUTTONDOWN: cur = event.pos click = pygame.mouse.get_pressed() clickButton("button1",button1.left,button1.top,button1.width,button1.height) 在确认对话框中返回选择的值。