2016-11-28 4 views
0

私のページにはgridviewがあり、編集ボタンをクリックするとという名前のmodalEditPurchaseという名前のブートストラップモーダルが表示され、データが表示されます。私はコードビハインドからモーダルのフィールドに値を設定しようとしましたが、機能しませんでした。フィールドには値が設定されていません。ASP.NET Webformはコードの背後からブートストラップモーダルを埋めます

誰かが私が間違ったことをアドバイスできますか?

ありがとうございます。

HTML

<div class="form-group"> 
      <div class="col-md-2"> 
       <a id="hypAddPurchase" data-toggle="modal" data-target="#modalAddPurchase" class="btn btn-primary" <%--style="float: left;"--%>> 
        <span class="glyphicon glyphicon-plus"></span> Add Purchase 
       </a> 
      </div> 
     </div> 

    <div class="form-group"> 
      <div class="col-md-11"> 
       <div class="container"> 
        <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
         <ContentTemplate> 
          <asp:GridView ID="gvDetails" runat="server" AutoGenerateColumns="false" CssClass="table table-bordered table-hover" 
           DataKeyNames="ID"> 
           <Columns> 
            <asp:BoundField DataField="ID" HeaderText="Id" /> 
            <asp:BoundField DataField="PRODUCT_CODE" HeaderText="Fund Code" /> 
            <asp:BoundField DataField="PRODUCT_NAME" HeaderText="Fund Name" /> 
            <asp:BoundField DataField="" HeaderText="Fund Currency" /> 
            <asp:BoundField DataField="INVEST_AMT" HeaderText="Amount Invest" /> 
            <asp:BoundField DataField="" HeaderText="Payment Currency" /> 
            <asp:BoundField DataField="ENTRY_FEE_RATE" HeaderText="Entry Fee %" /> 
            <asp:BoundField DataField="ENTRY_FEE_AMT" HeaderText="Entry Fee Amount" /> 
            <asp:BoundField DataField="GST_RATE" HeaderText="GST %" /> 
            <asp:BoundField DataField="GST_AMT" HeaderText="GST Amount" /> 
            <asp:BoundField DataField="TRANS_AMT" HeaderText="Transaction Amount" /> 
            <asp:BoundField DataField="FX_RATE" HeaderText="FX Rate" Visible="False" /> 
            <asp:TemplateField> 
             <ItemTemplate> 
              <asp:LinkButton runat="server" CommandName="Edit" data-toggle="modal" data-target="#modalEditPurchase" CssClass="btn btn-primary btn-sm" OnClick="OpenEdit_OnClick"><span class="glyphicon glyphicon-pencil"></span> Edit</asp:LinkButton> 
              <asp:LinkButton runat="server" CommandName="Delete" CssClass="btn btn-primary btn-sm"><span class="glyphicon glyphicon-minus"></span> Delete</asp:LinkButton> 
             </ItemTemplate> 
            </asp:TemplateField> 
           </Columns> 
          </asp:GridView> 
         </ContentTemplate> 
         <Triggers> 
          <asp:AsyncPostBackTrigger ControlID="btnAdd" EventName="Click" /> 
         </Triggers> 
        </asp:UpdatePanel> 
       </div> 
      </div> 
     </div> 

<div class="modal fade" id="modalEditPurchase" tabindex="-1" role="dialog"> 
     <div class="modal-dialog"> 
      <div class="modal-content"> 
       <div class="modal-header"> 
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
        <h4 class="modal-title" id="modalEditPurchaseLabel">Edit Purchase</h4> 
       </div> 
       <div class="modal-body"> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">Fund:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:DropDownList class="form-control chosen-select_inModal" ID="ddlFundEdit" Width="400" runat="server"></asp:DropDownList> 
         </div> 
        </ul> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">Fund Currency:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:TextBox runat="server" ID="txtFundCurrencyEdit" CssClass="form-control"></asp:TextBox> 
         </div> 
        </ul> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">Amount Invest:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:TextBox runat="server" id="txtAmountInvestEdit" CssClass="form-control" placeholder="00.00"></asp:TextBox> 
         </div> 
        </ul> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">Payment Currency:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:TextBox runat="server" id="txtPaymentCurrencyEdit" CssClass="form-control" placeholder="Payment Currency"></asp:TextBox> 
         </div> 
        </ul> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">FX Rate:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:TextBox runat="server" id="txtFxRateEdit" CssClass="form-control" placeholder ="FX Rate"></asp:TextBox> 
         </div> 
        </ul> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">Entry Fee %:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:TextBox runat="server" id="txtEntryFeeRateEdit" CssClass="form-control" placeholder="Entry Fee Rate %"></asp:TextBox> 
         </div> 
        </ul> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">Entry Fee:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:TextBox runat="server" id="txtEntryFeeAmtEdit" CssClass="form-control" placeholder="00.00"></asp:TextBox> 
         </div> 
        </ul> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">GST %:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:TextBox runat="server" id="txtGstRateEdit" CssClass="form-control" placeholder="GST Rate %"></asp:TextBox> 
         </div> 
        </ul> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">GST Amount:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:TextBox runat="server" id="txtGstAmtEdit" CssClass="form-control" placeholder="00.00"></asp:TextBox> 
         </div> 
        </ul> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">Trans Amount:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:TextBox runat="server" id="txtTransAmtEdit" CssClass="form-control" placeholder="00.00"></asp:TextBox> 
         </div> 
        </ul> 
       </div> 
       <div class="modal-footer"> 
        <asp:Button runat="server" CssClass="btn btn-primary" ID="btnEdit" Text="Update" UseSubmitBehavior="false" OnClick="btnEdit_Click"/> 
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
       </div> 
      </div> 
     </div> 
    </div> 

<div class="modal fade" id="modalAddPurchase" tabindex="-1" role="dialog"> 
     <div class="modal-dialog" style="width: 768px;"> 
      <div class="modal-content"> 
       <div class="modal-header"> 
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
        <h4 class="modal-title" id="modalAddPurchaseLabel">Add Purchase</h4> 
       </div> 
       <div class="modal-body"> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">Fund:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:DropDownList class="form-control chosen-select_inModal" ID="ddlFundAdd" Width="400" runat="server"></asp:DropDownList> 
         </div> 
        </ul> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">Fund Currency:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:TextBox runat="server" ID="txtFundCurrencyAdd" CssClass="form-control"></asp:TextBox> 
         </div> 
        </ul> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">Amount Invest:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:TextBox runat="server" id="txtAmountInvestAdd" CssClass="form-control" placeholder="Amount Invest"></asp:TextBox> 
         </div> 
        </ul> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">Payment Currency:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:TextBox runat="server" id="txtPaymentCurrencyAdd" CssClass="form-control" placeholder="Payment Currency"></asp:TextBox> 
         </div> 
        </ul> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">FX Rate:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:TextBox runat="server" id="txtFxRateAdd" CssClass="form-control" placeholder ="FX Rate"></asp:TextBox> 
         </div> 
        </ul> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">Entry Fee %:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:TextBox runat="server" id="txtEntryFeeRateAdd" CssClass="form-control"></asp:TextBox> 
         </div> 
        </ul> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">Entry Fee:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:TextBox runat="server" id="txtEntryFeeAmtAdd" CssClass="form-control"></asp:TextBox> 
         </div> 
        </ul> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">GST %:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:TextBox runat="server" id="txtGstRateAdd" CssClass="form-control"></asp:TextBox> 
         </div> 
        </ul> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">GST Amount:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:TextBox runat="server" id="txtGstAmtAdd" CssClass="form-control"></asp:TextBox> 
         </div> 
        </ul> 
        <ul class="row"> 
         <div class="col-md-4" align="right"> 
          <label class="control-label">Trans Amount:</label> 
         </div> 
         <div class="col-md-5"> 
          <asp:TextBox runat="server" id="txtTransAmtAdd" CssClass="form-control" placeholder="Transaction Amount"></asp:TextBox> 
         </div> 
        </ul> 
       </div> 
       <div class="modal-footer"> 
        <asp:Button runat="server" CssClass="btn btn-primary" ID="btnAdd" Text="Add" UseSubmitBehavior="false" OnClick="btnAdd_Click" data-dismiss="modal"/> 
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
       </div> 
      </div> 
     </div> 
    </div> 

C#

protected void OpenEdit_OnClick(object sender, EventArgs e) 
     { 
      if (gvDetails.Rows.Count > 0) 
      { 
       GridViewRow row = gvDetails.SelectedRow; 
       ddlFundEdit.SelectedValue = row.Cells[1].Text; 
       txtFundCurrencyEdit.Text = row.Cells[3].Text; 
       txtAmountInvestEdit.Text = row.Cells[4].Text; 
       txtPaymentCurrencyEdit.Text = row.Cells[5].Text; 
       txtEntryFeeRateEdit.Text = row.Cells[6].Text; 
       txtEntryFeeAmtEdit.Text = row.Cells[7].Text; 
       txtGstRateEdit.Text = row.Cells[8].Text; 
       txtGstAmtEdit.Text = row.Cells[9].Text; 
       txtTransAmtEdit.Text = row.Cells[10].Text; 
       txtFxRateEdit.Text = row.Cells[11].Text; 
      } 
     } 

protected void btnAdd_Click(object sender, EventArgs e) 
     { 
      int rowIndex = 0; 

      DataTable dtCurrentTable = new DataTable(); 
      DataRow drCurrentRow = null; 

      if (ViewState["CurrentTable"] != null) 
      { 
       dtCurrentTable = (DataTable) ViewState["CurrentTable"]; 

       if (dtCurrentTable.Rows.Count > 0) 
       { 
        for (int i = 1; i <= dtCurrentTable.Rows.Count; i++) 
        { 
         // Extract current values in table 
         string id = gvDetails.Rows[rowIndex].Cells[0].Text; 
         string fund = gvDetails.Rows[rowIndex].Cells[1].Text; 
         string fundName = gvDetails.Rows[rowIndex].Cells[2].Text; 
         string fundCurrency = gvDetails.Rows[rowIndex].Cells[3].Text; 
         string amountInvest = gvDetails.Rows[rowIndex].Cells[4].Text; 
         string paymentCurrency = gvDetails.Rows[rowIndex].Cells[5].Text; 
         string entryFeeRate = gvDetails.Rows[rowIndex].Cells[6].Text; 
         string entryFeeAmount = gvDetails.Rows[rowIndex].Cells[7].Text; 
         string gstRate = gvDetails.Rows[rowIndex].Cells[8].Text; 
         string gstAmount = gvDetails.Rows[rowIndex].Cells[9].Text; 
         string transactionAmount = gvDetails.Rows[rowIndex].Cells[10].Text; 
         string fxRate = gvDetails.Rows[rowIndex].Cells[11].Text; 

         dtCurrentTable.Rows[i - 1]["ID"] = id; 
         dtCurrentTable.Rows[i - 1]["PRODUCT_CODE"] = fund; 
         dtCurrentTable.Rows[i - 1]["PRODUCT_NAME"] = fundName; 
         dtCurrentTable.Rows[i - 1]["FUND_CURRENCY"] = fundCurrency; 
         dtCurrentTable.Rows[i - 1]["INVEST_AMT"] = amountInvest; 
         dtCurrentTable.Rows[i - 1]["PAYMENT_CURRENCY"] = paymentCurrency; 
         dtCurrentTable.Rows[i - 1]["ENTRY_FEE_RATE"] = entryFeeRate; 
         dtCurrentTable.Rows[i - 1]["ENTRY_FEE_AMT"] = entryFeeAmount; 
         dtCurrentTable.Rows[i - 1]["GST_RATE"] = gstRate; 
         dtCurrentTable.Rows[i - 1]["GST_AMT"] = gstAmount; 
         dtCurrentTable.Rows[i - 1]["TRANS_AMT"] = transactionAmount; 
         dtCurrentTable.Rows[i - 1]["FX_RATE"] = fxRate; 

         rowIndex++; 
        } 
       } 
      } 
      else 
      { 
       dtCurrentTable.Columns.Add("ID", typeof(string)); 
       dtCurrentTable.Columns.Add("PRODUCT_CODE", typeof(string)); 
       dtCurrentTable.Columns.Add("PRODUCT_NAME", typeof(string)); 
       dtCurrentTable.Columns.Add("FUND_CURRENCY", typeof(string)); 
       dtCurrentTable.Columns.Add("INVEST_AMT", typeof(string)); 
       dtCurrentTable.Columns.Add("PAYMENT_CURRENCY", typeof(string)); 
       dtCurrentTable.Columns.Add("ENTRY_FEE_RATE", typeof(string)); 
       dtCurrentTable.Columns.Add("ENTRY_FEE_AMT", typeof(string)); 
       dtCurrentTable.Columns.Add("GST_RATE", typeof(string)); 
       dtCurrentTable.Columns.Add("GST_AMT", typeof(string)); 
       dtCurrentTable.Columns.Add("TRANS_AMT", typeof(string)); 
       dtCurrentTable.Columns.Add("FX_RATE", typeof(string)); 
      } 

      drCurrentRow = dtCurrentTable.NewRow(); 
      drCurrentRow["ID"] = rowIndex + 1; 
      drCurrentRow["PRODUCT_CODE"] = ddlFundAdd.SelectedValue; 
      drCurrentRow["PRODUCT_NAME"] = ddlFundAdd.SelectedItem.Text; 
      drCurrentRow["FUND_CURRENCY"] = txtFundCurrencyAdd.Text; 
      drCurrentRow["INVEST_AMT"] = txtAmountInvestAdd.Text; 
      drCurrentRow["PAYMENT_CURRENCY"] = txtPaymentCurrencyAdd.Text; 
      drCurrentRow["ENTRY_FEE_RATE"] = txtEntryFeeRateAdd.Text; 
      drCurrentRow["ENTRY_FEE_AMT"] = txtEntryFeeAmtAdd.Text; 
      drCurrentRow["GST_RATE"] = txtGstRateAdd.Text; 
      drCurrentRow["GST_AMT"] = txtGstAmtAdd.Text; 
      drCurrentRow["TRANS_AMT"] = txtTransAmtAdd.Text; 
      drCurrentRow["FX_RATE"] = txtFxRateAdd.Text; 

      dtCurrentTable.Rows.Add(drCurrentRow); 
      ViewState["CurrentTable"] = dtCurrentTable; 

      BindGrid(); 

     } 

protected void BindGrid() 
     { 
      if (ViewState["CurrentTable"] != null) 
      { 
       gvDetails.DataSource = ViewState["CurrentTable"] as DataTable; 
      } 
      else 
      { 
       gvDetails.DataSource = null; 
      } 
      gvDetails.DataBind(); 
     } 

答えて

0

私はこの問題を早期に解決できたことをお知らせします。

1)IはOnEdit_Clickでこれを追加)

2ボタンへのGridViewにLinkBut​​tonコントロールを変更:のUpdatePanel

4内modalEditPurchaseを入れ)

Button btn = sender as Button; 
GridViewRow row = btn.NamingContainer as GridViewRow; 

string id = gvDetails.DataKeys[row.RowIndex].Values[0].ToString(); 

3)modalEditPurchaseを移入idを使って

ご協力いただきありがとうございます。

1

すべてが、asp:UpdatePanelタグの中にも、モーダル<div class="modal fade" ...>でなければなりません。それはうまくいくはずです。 UpdatePanels仕事のやり方だ

:サーバーの呼び出しがあるときは、(あなたがページの他の部分を更新しようとしても)だけそのContentTemplate面積が更新され、を引き起こしました。


EDIT

私は、UpdatePanelのトリガーのに問題があると思う。それは、グリッドのクリックイベントに向けられるべきですが、現在ケースではないようです。 CommandName="Edit"をので、あなたはこのように、グリッドのOnRowCommandイベントをキャプチャする必要があります:

[編集]ボタンは、すでにコマンドが設定されてい

<asp:GridView ID="gvDetails" ... OnRowCommand="grid_RowCommand"> 

もこのように、UpdatePanelののトリガーを変更:

<asp:AsyncPostBackTrigger ControlID="gvDetails" EventName="OnRowCommand" /> 

と背後にあるコードで:

protected void grid_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Edit") 
    { 
     // your current OpenEdit_OnClick code 
    } 
} 
+0

ありがとうございます。私は、内のUpdatePanel内にmodalEditPurchaseを置いてみましたが、Gridviewの後にはまだフィールドに値を設定できません。 OpenEdit_OnClickがデバッグされても起動していないようです。私が逃した他の措置はありますか? – Intan

+0

1つの質問: 'btnAdd'コントロールはどこにありますか?あなたのUpdatePanelトリガはそれを参照しますが、あなたのコードには現れません: '

0

GridViewRow row = (sender as LinkButton).NamingContainer as GridViewRow;

今すぐ行からデータを取得してください。

+0

ご返信ありがとうございます。私はこのメソッドを試しましたが、モーダルのフィールドにはまだ値が設定されていません。 – Intan

関連する問題