2015-04-30 4 views
11

पर आग नहीं लगाता है मैंने एक ईवेंट ट्रिगर के साथ रनटाइम पर एक नया लिंकबटन बनाने और लिंकबटन उत्पन्न करने के लिए इवेंट हैंडलर जोड़ने के कुछ निर्देशों का पालन किया है। मुझे नहीं पता कि नया लिंकबटन इसमें शामिल घटना को ट्रिगर क्यों नहीं करता है। कोई भी कृपया मुझे मार्गदर्शन/सही करें।गतिशील रूप से जेनरेट किया गया लिंकबटन ऑनक्लिक ईवेंट VB.Net

यह मेरे पास अभी है।

ASPX:

<form id="myForm" runat="server"> 
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 

<ContentTemplate> 

<table class="mel-table" style="text-align: center" runat="server" id="mytab1"> 

    <tbody> 
     <tr> 
      <td>Case Number :</td> 

      <td> 
      <asp:TextBox ID="caseNumber" runat="server"></asp:TextBox> 
      </td> 

     </tr> 

    </tbody> 
    </table> 

    <asp:Button OnClick="btnOK1_Click" ID="btnOK1" runat="server" Text="Save" /> 

    </ContentTemplate> 

    </asp:UpdatePanel> 
</form> 

ASPX.VB:

Protected Overloads Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    If Session("tablecontent") IsNot Nothing Then 
     mytab1 = CType(Session("tablecontent"), HtmlTable) 
    End If 
End Sub 

Public Function checking() As Boolean 

     Dim caseNo As Double 
      Try 
       caseNo = Convert.ToDouble((caseNumber.Text).Trim()) 
      Catch ex As Exception 
      caseNo = 0 
      End Try 

     Dim r As New HtmlTableRow 
     Dim c0 As New HtmlTableCell 
     r.Cells.Add(c0) 

     Dim but As New LinkButton 
     but.ID = caseNo 
     but.Text = caseNo.ToString() 
     AddHandler but.Click, AddressOf LinkButton1_Click 
     c0.Controls.Add(but) 

     mytab1.Rows.Add(r) 
     Session("tablecontent") = mytab1 
     Return True 
End Function 

Protected Sub LinkButton1_Click(sender As Object, e As EventArgs) 

    'My Code here 

End Sub 

Protected Sub btnOK1_Click(sender As Object, e As EventArgs) 

    If (checking()) Then 

     ScriptManager.RegisterStartupScript(Page, Page.GetType, "Alert", "<script type='text/javascript'>alert('Success');</script>", False) 

    End If 

End Sub 
+0

जब आप इसे 'डबल' असाइन करते हैं तो 'मंद केस नहीं लंबे समय तक' क्यों? मेरा अनुमान है कि इसे 'अपडेटपेनल' में होना है। – OneFineDay

+0

मैंने मामले के प्रकार को बदलने की कोशिश की है, जैसा कि डबल और यह भी काम नहीं करता है। –

+0

मैंने यह नहीं कहा कि समस्या को ठीक करेगा। बस सोच रहा था कि आप जिस चीज को सेट कर रहे थे उससे अलग प्रकार क्यों था? यह एक 'डबल' होना चाहिए यदि वह प्रकार है जिसकी आपको आवश्यकता है। – OneFineDay

उत्तर

4

आप "सहेजें" बटन पर क्लिक करते हैं, या तो स्थानीय भंडारण या डेटाबेस और में डेटा को बचाने: मैं जोड़ा मामले में जो मैं ViewState में बचत कर रहा हूँ फिर से लोड करने के लिए विधि कॉल ReloadRows() का उपयोग कर रहा भंडारण से सामग्री के साथ पृष्ठ भरने के लिए पृष्ठ को फिर से लोड करने का प्रयास करें। इस मामले में, आपके पास पृष्ठ पर सामग्री हो सकती है और इसलिए, आप ईवेंट का भी उपयोग कर सकते हैं।

1

जब भी आपको अपनी पोस्टबैक पर यह फिर से लोड करने के लिए है गतिशील नियंत्रण पैदा करते हैं।

 <asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional" > 
      <ContentTemplate> 
       <asp:Table class="mel-table" style="text-align: center" runat="server" id="mytab1"> 
        <asp:TableRow> 
         <asp:TableCell>Case Number :</asp:TableCell> 
         <asp:TableCell> 
          <asp:TextBox ID="caseNumber" runat="server"></asp:TextBox> 
         </asp:TableCell> 
        </asp:TableRow> 
       </asp:Table> 
       <asp:Button OnClick="btnOK1_Click" ID="btnOK1" runat="server" Text="Save" /> 
      </ContentTemplate> 
     </asp:UpdatePanel> 

-------------------------------------------------------------------------------------------------------- 

Public Partial Class _Default 
    Inherits System.Web.UI.Page 

    Private listCaseNo As List(Of Double) = Nothing 

    Protected Sub Page_Init(sender As Object, e As EventArgs) 

    End Sub 


    Protected Sub Page_Load(sender As Object, e As EventArgs) 
     If ViewState("ListCases") IsNot Nothing Then 
      listCaseNo = DirectCast(ViewState("ListCases"), List(Of Double)) 
     Else 
      listCaseNo = New List(Of Double)() 
     End If 

     ReloadRows() 
    End Sub 

    Public Function checking() As Boolean 

     Dim caseNo As Double = 0 
     Try 
      caseNo = Convert.ToDouble((caseNumber.Text).Trim()) 
     Catch ex As Exception 
      caseNo = 0 
     End Try 

     Dim r As New TableRow() 
     Dim c0 As New TableCell() 
     r.Cells.Add(c0) 

     Dim but As New LinkButton() 
     but.ID = Convert.ToString(caseNo) 
     but.Text = caseNo.ToString() 
     AddHandler but.Click, AddressOf LinkButton1_Click 
     c0.Controls.Add(but) 

     mytab1.Rows.Add(r) 

     listCaseNo.Add(caseNo) 

     ViewState("ListCases") = listCaseNo 

     Return True 
    End Function 


    Private Sub ReloadRows() 
     For Each objCase As var In listCaseNo 
      Dim r As New TableRow() 
      Dim c0 As New TableCell() 
      r.Cells.Add(c0) 

      Dim but As New LinkButton() 
      but.ID = Convert.ToString(objCase) 
      but.Text = objCase.ToString() 
      AddHandler but.Click, AddressOf LinkButton1_Click 
      c0.Controls.Add(but) 

      mytab1.Rows.Add(r) 
     Next 
    End Sub 

    Protected Sub LinkButton1_Click(sender As Object, e As EventArgs) 
     'My Code here 

    End Sub 


    Protected Sub btnOK1_Click(sender As Object, e As EventArgs) 


     If (checking()) Then 
     End If 

    End Sub 

End Class 
+0

प्रत्येक objCase के लिए var में सूची के रूप में CaseNo 'var' से आपका क्या मतलब है? और जब भी पैनल रीफ्रेश हो जाता है तो "ReloadRows()" विधि तालिका में एक पंक्ति जोड़ती है। पैनल अन्य तत्वों से भी घटना के साथ ताज़ा हो सकता है। –

+0

@GiriDharan आप var के बजाय डबल का उपयोग कर सकते हैं। मैंने यह कोड सी # में किया है और फिर vb में परिवर्तित किया है। – Sandeep

+0

यह कोई काम नहीं करता है। –

संबंधित मुद्दे