0

入力 (テキスト、チェックボックス、ドロップダウンリスト) を 1 つの html ページに保存し、それを asp:panel に読み込んでいます。読み込んだ後、ユーザーはそれに値を入力できます。Asp:button をクリックして、その入力タイプを見つけてデータベースに保存する必要があります。どのように達成できますか。

入力コードはこの形式になります。

<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 とテキストを見つける必要があります...どうすれば可能でしょうか..

4

3 に答える 3

1

まず、サーバー上でラベルの値を取得できません。動的テキストボックスの値を取得するには、それに属性を割り当て、その名前でコレクションnameからポストバックで値を取得する必要があります。Request.Form

于 2012-10-17T10:54:54.597 に答える
0

ここで、HTMLボタンのクリックでテキスト、選択、ラベルのIDを見つけるための解決策を得ました

 <input type="button" id="save" value="submit" onclick="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";

    }

それは行われました..それが私のような誰かに役立つことを願っています..うーん...

于 2012-10-22T08:10:07.240 に答える
0

それを達成するには、少なくとも 2 つのオプションがあります。

  • 作成しているフィールドと一緒にいくつかの非表示フィールドも作成し、非表示フィールドにフィールド タイプの値とその他の必要なメタ データを配置します。フォームを投稿すると、これらの非表示フィールドは、データベースに適切に挿入するために使用できるフォームに関するメタデータを提供します。

また

  • コントロールを動的に作成する場合は、ajax リクエストを使用してサーバーに通知し、サーバーがこれらのフィールドを事前に認識できるようにします。この情報をセッションに保存し、フォームがポストバックされたときに、それを使用してリクエスト オブジェクトからデータを取得できます。

いずれの場合も、フィールドの値を取得するには生のリクエスト オブジェクトを使用する必要があります。asp.net は、ページに存在しないフィールドをビュー ステートの一部ではないため解析しないためです。

通常の方法で投稿するのではなく、ajax を使用してフォーム全体を投稿することをお勧めします。このようにして、動的データのみが送信されることを確認できます。

于 2012-10-17T10:55:12.923 に答える