2017-05-27 10 views
1

文字列を連結してimをタグで動的に生成しようとしていますが、結果を取得していますが、要素をクリックするとイベントが機能しません。私はそれがonClickイベントをサポートしていないかもしれないと思って、onClickなどを入れるような他の方法を試しましたが、何も動作しません。ここで私を助けてください。 なぜC#のonClickイベントがテーブルのタグの​​で動作しない

私のhtmlコード:

<table class="downloadTable"> 
     <tr> 
      <th class="sn">SN</th> 
      <th class="assi">Notes Title</th> 
      <th class="pby">Subject</th> 
      <th class="ld">Posted by</th> 
      <th class="dp">Posted date</th> 
     </tr><%=getNotesData()%> 
    </table> 

私のC#のコーディング:

<table class="massi tb"> 
<tbody> 
    <tr> 
     <th class="sn">SN</th> 
     <th class="assi">Assignment Title</th> 
     <th class="pby">Posted By</th> 
     <th class="pd">Post Date</th> 
     <th class="ld">Last Submit Date</th> 
    </tr> 


    <tr onclick="_storeDetails(4)"> 
     <td>1</td> 
     <td>Java assignment 1</td> 
     <td>java</td> 
     <td>tanvi</td> 
    </tr> 
    <tr onclick="_storeDetails(4)"> 
     <td>1</td> 
     <td>vector graphics</td> 
     <td>web development</td> 
     <td>pandey</td> 
    </tr> 
    <tr onclick="_storeDetails(4)"> 
     <td>1</td> 
     <td>Advance java assignment 2</td> 
     <td>Advance Java</td> 
     <td>Tenvi Gautam</td> 
    </tr> 
    <tr> 
     <td>1</td> 
     <td onclick="_storeDetails">Java assignment 1</td> 
     <td>java</td> 
     <td>tanvi</td> 
    </tr> 
</tbody> 
:()

protected void _storeDetails(int uid) 
{ 
    Session["AssignmentNo"] = uid; 
    Response.Redirect("~/ViewAssignment.aspx"); 
} 

たブラウザコードのonClickを呼び出すイム

public string getAssignmentData() 
{ 
    string data = ""; 
    string CS = ConfigurationManager.ConnectionStrings["_logdb"].ConnectionString; 
    using (SqlConnection conn = new SqlConnection(CS)) 
    { 
     string query = "Select * from _tbNotes"; 
     SqlCommand comm = new SqlCommand(query, conn); 
     conn.Open(); 
     using (SqlDataReader drd = comm.ExecuteReader()) 
     { 
      if (drd.HasRows) 
      { 
       while (drd.Read()) 
       { 
        int id = 1; 
        string title = drd.GetString(1); 
        string sub = drd.GetString(2); 
        string auth = drd.GetString(3); 
        data += "<tr OnClick=\"_storeDetails(4)\"><td>" + id + "</td><td>" + title + "</td><td>" + sub + "</td><td>" + auth + "</td></tr>"; 
        id++; 
       } 
      } 
     } 
     return data; 

    } 
} 

機能210

ここで間違っていることを教えてください。同じことをやっている代替案があれば教えてください。

答えて

0

クライアント側のコードからサーバー側の関数を呼び出そうとしています。この例では動作しません。いくつかのオプションがあります:

  • 送信元として希望のコントロールを設定します。

    <tr onclick="_storeDetails(4)">

    <script type="text/javascript"> 
        function _storeDetails(parameter) 
        { 
         __doPostBack('_storeDetailsClick', parameter) 
        } 
        </script> 
    

    あなたは、その後をPage_Loadでポストバックを扱うことができる():あなたはjavascript機能クライアントを作成する必要があります。

  • 使用するWebメソッド:

    [WebMethod] 
    public static void StoreDetails(int uid) 
    { 
    } 
    

    JavaScriptでそれを呼び出します。

    PageMethods.SetName(parameterValue, onSuccess, onFail); 
    

    あなたはページのメソッドを初期化する必要があります。

    <asp:ScriptManager ID="ScriptMgr" runat="server" EnablePageMethods="true"></asp:ScriptManager> 
    
  • はそれをすべてのクライアント側を実行してください。もちろん、これは投稿されたデータで何をしているかによって異なります。

    動作しません
2

このため:

<tr onclick="_storeDetails(4)"> 

は、クライアント側で目的球_storeDetailsを呼び出すことを意味します。したがって、関数はjavascript関数でなければなりません。

storeDetailsはサーバー側の方法です。

<tr onclick="javascript:__doPostBack('_storeDetails','4');"> 

そして、サーバ側では、このコードが必要になります:

if (this.IsPostBack) 
{ 
    if (Request["__EVENTTARGET"] == "_storeDetails") 
    { 
     // This can fail if you pass a value which is not an integer 
     // You can use TryParse instead if you want. 
     int param = int.Parse(Request["__EVENTARGUMENT"]); 
     _storeDetails(param); 
    } 
} 
かわりに、このようにそれを行う必要があります
関連する問題