2013-08-26 5 views
1

저는 새로운 요구 사항이있어서 저에게 까다로 우며 지금까지는 파악할 수 없습니다. gridview를 사용하여 데이터를 삽입하고 업데이트합니다. 하나의 요구 사항 중 하나는 사용자가 수동으로 새 레코드를 추가 할 때 동일한 "거래 번호"가 존재하고 팝업을 표시하는 경우입니다. 이 팝업에는 이미 존재하는 레코드가 표시되어야합니다. 그들은 "사용", "폐기"또는 "확인"버튼 중 하나를 클릭 할 수 있어야합니다. '사용'버튼은 기본적으로 팝업을 닫고 사용자가 입력 한 텍스트 상자를 지 웁니다. '폐기'버튼은 존재하는 레코드를 삭제해야 사용자가 동일한 거래 번호를 사용하여 새 레코드를 삽입 할 수 있습니다. 그 이유는 거래 번호가 발생하는 "거래"에 대한 가장 고유 한 번호이기 때문입니다. 이전 응용 프로그램에서 새 응용 프로그램으로 내보내는 방식으로 복제본이 다운로드되고 처음에는 내보낼 때보 다 많은 정보가 포함 된 복제본이 다운로드됩니다. 그래서 사용자가 유지할 레코드를 선택해야한다는 요구 사항을 추가해야합니다. 이 모든 것이 당신에게 의미가 있기를 바랍니다. 나는 몇 가지 말린 것을 마셨다. 그러나 이것은 내가 현재 가지고있는 것이고 나는 붙어있다.jQuery를 사용하여 데이터베이스에있는 테이블에서 중복 항목을 삭제하십시오.

JQuery와 스크립트 :

<script type="text/javascript"> 
    $(document).ready(function() { 
     function showpopup() { 
      $("#popup").dialog("open"); 
     } 

     $("#popup").dialog({ 
      modal: true, 
      width: 450, 
      autoOpen: false, 
      open: function (type, data) { 
       $(this).parent().appendTo("form"); 
      } 
     }); 

     $("#popup").each(function() { 
      var popup = $(this); 
      popup.parent().appendTo($("form:first")); 
     }); 
    }); 
</script> 

그리고 스크립트가 기존 레코드를 표시하는 또 다른있는 gridview이있는 호출 이제 부문

.. 지금
<div class="popUpStyle" title="Duplicate Deal Found!" id="popup" style="display:none"> 
      <asp:GridView ID="gvDealTracking" runat="server" Width="200px" AutoGenerateColumns="False"> 
       <Columns> 
        <asp:TemplateField HeaderText="Stock #"> 
         <ItemTemplate> 
          <asp:Label ID="lblDupStockNumber" runat="server" Text='<%# Bind("StockNumber") %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="Deal #"> 
         <ItemTemplate> 
          <asp:Label ID="lblDupDealNumber" runat="server" Text='<%# Bind("FIMAST") %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="DealDate"> 
         <ItemTemplate> 
          <asp:Label ID="lblDupDealDate" runat="server" Text='<%# Bind("DealDate") %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="Buyer"> 
         <ItemTemplate> 
          <asp:Label ID="lblDupBuyer" runat="server" Text='<%# Bind("Buyer") %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="GrossProfit"> 
         <ItemTemplate> 
          <asp:Label ID="lblDupGrossProfit" runat="server" Text='<%# Bind("GrossProfit") %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="AmtFinanced"> 
         <ItemTemplate> 
          <asp:Label ID="lblDupAmtFinanced" runat="server" Text='<%# Bind("AmtFinanced") %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:TemplateField HeaderText="BankName"> 
         <ItemTemplate> 
          <asp:Label ID="lblDupBankName" runat="server" Text='<%# Bind("BankName") %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
       </Columns> 
      </asp:GridView> 
      <br /> 
      <asp:Button ID="btnUse" Text="Use" runat="server"></asp:Button> 
      <asp:Button ID="btnDiscard" Text="Discard" runat="server" OnClick="btnDiscard_Click" style="display:none"></asp:Button> 
      <asp:Label ID="lblMessagePop" runat="server"></asp:Label> 
      <br /> 
     </div> 

내가 시도하는 데 사용하는 코드 숨김

기존 레코드를 삭제하는 중입니다.

protected void btnDiscard_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       GridViewRow gvr = (GridViewRow)(sender as Control).Parent.Parent; 
       string dealnumber = ((Label)gvr.FindControl("lblDupDealNumber")).Text.Trim(); 

       conn.Open(); 
       SqlCommand cmdDeleteDup = new SqlCommand("DELETE * FROM Vehicle WHERE FIMAST = @FIMAST", conn); 
       cmdDeleteDup.Parameters.AddWithValue("@FIMAST", dealnumber); 
       cmdDeleteDup.ExecuteNonQuery(); 
       conn.Close(); 

      } 
      catch (Exception ex) 
      { 
       lblMessagePop.Text = ex.ToString(); 
      } 
     } 

버튼 클릭이 실행되고 있지 않습니다. 이제 어떻게 작동시키는 지 알 수 있습니다. 나는 다른 결과를 시도했지만 결과는 같았습니다. 나는 레코드가 존재 하는지를 확인하는 판독기를 사용하고 행이 있으면이 팝업을 표시합니다. 그것은 완벽하게 표시됩니다, 그냥 내 버튼은 아무것도하지 않습니다. 이것이 적절한 방법이 아니라면 알려주십시오. 어떤 안내도 크게 감사드립니다!

이것은 내가 C#에서 팝업을 호출하는 방법입니다. 여기에는 행이 있는지 확인하는 판독기가 있으며, 그렇다면 기존 레코드가 팝업에 표시됩니다. 나는 이것을하기 위해 데이터 어댑터를 사용한다. 그런 다음 Page.ClientScript를 사용하여 팝업을 열고 결과를 표시합니다.

SqlDataReader rdr = null; 
       SqlCommand cmdCheckExisting = new SqlCommand("SELECT StockNumber, DealDate, Buyer FROM Vehicle WHERE FIMAST = '" + DealNumber + "';", conn); 
       rdr = cmdCheckExisting.ExecuteReader(); 
       if (rdr.HasRows) 
       { 
        rdr.Close(); 
        DataTable dt = new DataTable(); 
        SqlDataAdapter cmdReturnExisting = new SqlDataAdapter("SELECT StockNumber, FIMAST, DealDate, Buyer, GrossProfit, AmtFinanced, BankName FROM Vehicle WHERE FIMAST = '" + DealNumber + "';", conn); 
        cmdReturnExisting.Fill(dt); 
        gvDealTracking.DataSource = dt; 
        gvDealTracking.DataBind(); 

        conn.Close(); 

        Page.ClientScript.RegisterStartupScript(this.GetType(), "Call my function", "showpopup();", true); 
       } 
+0

해당 버튼의 클릭 방법을 실행하려고합니까? –

답변

0

해결책을 찾았습니다. 간단히 단추를 LinkButton으로 변경했습니다. 어떤 이유로 든 asp linkbutton이 gridview 외부 또는 내부에 배치되면 모든 것이 완벽하게 작동합니다. 다음은 gridview가있는 팝업입니다.

<script type="text/javascript"> 
       function showpopup() { 
        $("#popup").dialog({ 
         modal: true, 
         width: 590, 
         buttons: { 
          Ok: function() { 
           $(this).dialog("close"); 
          } 
         } 
        }); 
       }; 
      </script> 

      <div class="popUpStyle" title="Duplicate Deal Found!" id="popup" style="display:none"> 
       <asp:GridView ID="gvDealTracking" runat="server" Width="200px" AutoGenerateColumns="False"> 
        <Columns> 
         <asp:TemplateField HeaderText="Stock #" HeaderStyle-Wrap="false"> 
          <ItemTemplate> 
           <asp:Label ID="lblDupStockNumber" runat="server" Text='<%# Bind("StockNumber") %>'></asp:Label> 
          </ItemTemplate> 
          <HeaderStyle Wrap="False" /> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="Dealership" SortExpression="Dealership"> 
          <EditItemTemplate> 
           <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Dealership") %>'></asp:TextBox> 
          </EditItemTemplate> 
          <ItemTemplate> 
           <asp:Label ID="Label1" runat="server" Text='<%# Bind("Dealership") %>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="Deal #" HeaderStyle-Wrap="false"> 
          <ItemTemplate> 
           <asp:Label ID="lblDupDealNumber" runat="server" Text='<%# Bind("FIMAST") %>'></asp:Label> 
          </ItemTemplate> 
          <HeaderStyle Wrap="False" /> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="DealDate"> 
          <ItemTemplate> 
           <asp:Label ID="lblDupDealDate" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "DealDate","{0:MM/dd/yyyy}") %>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="Buyer"> 
          <ItemTemplate> 
           <asp:Label ID="lblDupBuyer" runat="server" Text='<%# Bind("Buyer") %>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="GrossProfit"> 
          <ItemTemplate> 
           <asp:Label ID="lblDupGrossProfit" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "GrossProfit","{0:n2}") %>'></asp:Label> 
          </ItemTemplate> 
          <ItemStyle HorizontalAlign="Right" /> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="AmtFinanced"> 
          <ItemTemplate> 
           <asp:Label ID="lblDupAmtFinanced" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "AmtFinanced","{0:C}") %>'></asp:Label> 
          </ItemTemplate> 
          <ItemStyle HorizontalAlign="Right" /> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="BankName"> 
          <ItemTemplate> 
           <asp:Label ID="lblDupBankName" runat="server" Text='<%# Bind("BankName") %>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
        </Columns> 
       </asp:GridView> 
       <br /> 
       <asp:Button ID="btnUse" runat="server" CausesValidation="false" OnClick="btnUse_Click" UseSubmitBehavior="false" Text="Use"></asp:Button> 
<asp:Button ID="lbDelete" runat="server" UseSubmitBehavior="false" CausesValidation="False" OnClick="lbDelete_Click" Text="Delete"></asp:Button> 
       <asp:Label ID="lblMessagePop" runat="server"></asp:Label> 
       <br /> 
      </div> 

편집 : 채드 덕분에 그는 asp 버튼이 전송 동작을 사용하도록 기본 설정했다고 지적했습니다. 단추 내 UseSubmitBehavior 옵션을 false로 설정하면 문제가 해결됩니다. 이제 popup 내의 asp 버튼을 사용하여 C# 메소드를 호출 할 수 있습니다.

1

편집 : "스타일 = '표시 : 없음'을"제거하십시오 당신의 사업부에서 추가합니다 : 대화 상자에 "에 AutoOpen 거짓". 그런 다음 "showpopup()"함수가 할 필요가있는 것은 "$ ("# popup "). dialog ('open');"

$(document).ready(function() { 
    $("#popup").dialog({ 
     modal: true, 
     width: 450, 
     autoOpen: false, 
     open: function(type,data) { 
      $(this).parent().appendTo("form"); 
     } 
    }); 

    $("#popup").each(function() { 
     var popup = $(this); 
     popup.parent().appendTo($("form:first")); 
    }); 

    function showpopup() { 
     $("#popup").dialog("open"); 
    } 
}); 
+0

나는 이것을 발사했다. jQuery 단추를 제거했지만 지금은 고정되어 있습니다. 나는 어떤 버튼이나 더 많은 팝업을 클릭 할 수 없다. 나는 오른쪽 상단 모서리에 "x"가 있으며 나는 그것을 클릭 할 수 없다. 무엇이 문제 일 수 있습니까? 이것에 대한 나의 다른 시도에서, 나는 똑같은 문제가 있었기 때문에 나는 완전히 긍정적이지는 않다. 도와 주셔서 감사합니다! – Humpy

+0

$ ("# popup")이 없어도.각 (function() { var popup = $ (this); popup.parent(). appendTo ($ ("form : first")); }); 단추가 폼에 나타나고, 나는 그들을 클릭 할 수 있고, 보통처럼 팝업을 움직일 수 있지만, 내 단추는 작동하지 않습니다. 이것은 "form : first"를 사용하고 페이지를 "잠그는"것처럼 보이는 세 번째 시도에 관한 것입니다. 나에게 이상하다. – Humpy

+0

'open : function (type, data) { $ (this) .parent(). appendTo ("form");을 ​​포함하는 편집을 시도하십시오. }' – Tricky12

관련 문제