2012-10-17 41 views
0

我已經在一個html頁面中保存了輸入(文本,複選框,下拉列表),並且正在加載用戶可以在其中輸入值的asp:panel中。現在通過點擊Asp:按鈕我必須找到輸入類型並保存到數據庫,它如何實現。通過C#輸入類型的文本查找ID,

輸入代碼將採用此格式。

<label style="left: 46px; top: 73px; position: relative;" id="Llb1" onmouseup="MLup(this.id)" class="ui-draggable" onmousedown="MLdown(this.id)"> Enter the value </label> 
<input style="left: 170px; top: 113px; position: relative;" id="T1" onmouseup="mUp(this.id)" class="ui-draggable" onmousedown="mDown(this.id)" value="" type="text"> 

該輸入類型,我必須找到這些ID,和文字......怎麼能有可能..

+0

你爲什麼不用asp.net頁面替換你的html頁面,並給你的輸入類型賦予屬性runat =「server」? –

+0

實際上,輸入類型是通過Jquery代碼動態創建的。 – Srikanth

+0

在這種情況下,您可能需要將您動態創建的控件註冊到asp.net表單。 –

回答

0

在這裏,我得到了查找文本的ID的解決方案,選擇通過HTML按鈕標籤點擊

<input type="button" id="save" value="submit" onclick="submitpage()" /> 

然後submitpage

<script type="text/javascript"> 
      function submitpage() { 
       var completeids = new Array(); 
       var completevalues = new Array(); 
       var completetype = new Array(); 
       var completeselected = new Array(); 
       var labelvalues = new Array(); 
      // var name = "abc"; 
       var name = document.getElementById('<%=username.ClientID %>').innerHTML 
       $('input[type="text"]').each(function() { 
        completeids.push($(this).attr('id')); 
        completetype.push('TEXTBOX'); 
        completevalues.push($(this).attr('value')); 
        completeselected.push('no'); 

       }); 
       $('label').each(function() { 
        completeids.push($(this).attr('id')); 
        completevalues.push($('label[id= ' + $(this).attr('id') + ']').html()); 
        labelvalues.push($('label[id= ' + $(this).attr('id') + ']').html()); 
        completetype.push('LABEL'); 
        completeselected.push('no'); 

       }); 
       $('select').each(function() { 
        completeids.push($(this).attr('id')); 
        completevalues.push($(this).val()); 
        completetype.push('DROPDOWN'); 
        completeselected.push('no'); 

       }); 
       $('input[type="checkbox"]').each(function() { 
        completeids.push($(this).attr('id')); 
        completevalues.push($('label[for=' + $(this).attr('id') + ']').html()); 
        completetype.push('CHECKBOX'); 
        completeselected.push($(this).attr('checked')); 

       }); 
       $('input[type="radio"]').each(function() { 
        completeids.push($(this).attr('id')); 
        completevalues.push($('label[for=' + $(this).attr('id') + ']').html()); 
        completetype.push('RADIOBUTTON'); 
        completeselected.push($(this).attr('checked')); 

       }); 
       $('input[type="file"]').each(function() { 
        completeids.push($(this).attr('id')); 
        //completevalues.push('not yet done'); 
        completevalues.push($(this).attr('value')); 

        completetype.push('FILE'); 
        completeselected.push('no'); 

       }); 

       var loc = window.location.href; 
       $.ajax({ 
        type: 'POST', 
        url: loc + "/GetSaved", 
        data: "{getcompleteids :'" + completeids + "',getcompletevalues :'" + completevalues + "',getcompletetypes :'" + completetype + "',getcompleteselected :'" + completeselected + "',getlabelvalue :'" + labelvalues + "',formname:'"+name+"'}", 
        contentType: "application/json; charset=utf-8" 

       }) 
      .success(function (response) { 
       alert(response.d); 

      }) 
      .error(function (response) { 
       alert(response.d); 
      }); 

      } 

    </script> 

在C#代碼我用這樣的.. 。

[WebMethod] 
    public static string GetSaved(string getcompleteids, string getcompletevalues, string getcompletetypes, string getcompleteselected, string getlabelvalue, string formname) 
    { 

     string[] completeids = getcompleteids.Split(','); 
     string[] completevalues = getcompletevalues.Split(','); 
     string[] completetypes = getcompletetypes.Split(','); 
     string[] completeselected = getcompleteselected.Split(','); 
     string[] labelvalues = getlabelvalue.Split(','); 
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dynamic"].ConnectionString); 
     string FORMNAME = labelvalues[0]; 
     for (int i = 0; i <= completeids.Length-1; i++) 
     { 
      con.Open(); 
                         //FORM_NAME,  USER_NAME   ,CONTRO_TYPE,    CONTROL_ID,  CONTROL_VALUE,    CONTROL_SELECTED 
      SqlCommand cmd = new SqlCommand("INSERT INTO CONTROLS_INFORMATION VALUES('" + FORMNAME + "',' "+formname+" ','" + completetypes[i] + "','" + completeids[i] + "','" + completevalues[i] + "','" + completeselected[i] + "')", con); 
      cmd.ExecuteNonQuery(); 
      con.Close(); 
     } 



     return "successfully"; 

    } 

有人做過.. 希望這將是對某一l相關ike me..hmm ...

1

首先,你不能讓唱片公司對服務器值。要獲取動態文本框值,您需要爲其分配name屬性,並通過該名稱從Request.Form集合獲取回發值。

0

您至少有兩個選擇來實現它。

  • 創建一些隱藏字段以及您正在創建的字段,並將字段類型值和其他所需元數據放在隱藏字段中。發佈表單時,這些隱藏字段將爲您提供有關表單的元數據,您可以使用這些表單將其正確地插入到數據庫中。

  • 當你動態創建的控制,使用Ajax請求,使服務器有這些領域的先驗知識通知服務器了。您可以在會話中存儲此信息,並在表單發回時,可以使用它從請求對象獲取數據。

在任何一種情況下,您都必須使用原始請求對象來獲取字段的值,因爲asp.net不會分析頁面上不存在的那些字段,因爲它們不會成爲視圖的一部分州。

這是一個好主意,使用ajax發佈整個表單,而不是以正常的方式發佈。這樣,您可以確保只發布動態數據。

+0

感謝您的建議兄弟...我會嘗試.... – Srikanth