2017-08-21 17 views
0

検索バーにトランザクション番号が表示され、ページに表示されるコードがあります。私はまた、クライアントがpriceと領収書のOR番号を入力する2つのテキストボックスを持っています。しかし、私はリピーター内のテキストボックスの値と保存先

"オブジェクト参照がインスタンスに設定されていません..." というエラー

.ASPX

<form id="form1" runat="server"> 
<div> 
<asp:Repeater ID="rptrCashierTable" runat="server"> 
    <ItemTemplate> 
     <div> 
      <h1 align="center">Transaction Number: <label><%# Eval("TXNNo") %></label> 

     <h2>Name:<label><%# Eval("FName") %></label> 
     <label><%# Eval("MName") %></label> 
     <label><%# Eval("LName") %></label></h2>    
     <h2>Contact Number: <label><%# Eval("MOBILE") %></label></h2> 
     <h2>Product Ordered: <label><%# Eval("PName") %></label></h2> 
     <h2>Product ID:<label><%# Eval("ProductID") %></label></h2> 
     <h2>Price: 
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></h2> 
     <h2>OR No.: 
      <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox></h2> 
       <asp:Button ID="Button1" runat="server" Text="Submit" OnClick="btn_Update" /> 
     </div> 
    </ItemTemplate> 
</asp:Repeater> 
</div> 
</form> 

.CS

public partial class TransactionDetails : System.Web.UI.Page 
{ 
    SQLQuery sql = new SQLQuery(); 
    DataSet ds = new DataSet(); 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      BindCasierTable(); 
     } 

    } 
    private void BindCasierTable() 
    {    
     string TransctID = Request.QueryString["TXNNo"]; 
     ds = sql.dsGetClientDetails(TransctID); 

     rptrCashierTable.DataSource = ds; 
     rptrCashierTable.DataBind(); 
    } 

    protected void btn_Update(object sender, EventArgs e) 
    { 


     foreach (RepeaterItem item in rptrCashierTable.Items) 
     {       

      if (item.ItemType == ListItemType.Item) 
      { 
       var txtPrice = item.FindControl("TextBox1") as TextBox; 
       var txtORNo = item.FindControl("TextBox2") as TextBox; 
       string TXNNo = Request.QueryString["TXNNo"]; 
       ds = sql.dsAddPayment(txtPrice.Text, txtORNo.Text, TXNNo); 
       txtPrice.Text = string.Empty; 
       txtORNo.Text = string.Empty; 
       BindCasierTable(); 
      } 


     } 
    } 
} 

I

を取得しています MSSQL 2008とストアドプロシージャを使用しています。私はちょうど更新し、それぞれのフィールドに Price支払ったとOR番号を入れたいです。

答えて

0

このエラーメッセージは、null値を持つものを割り当てることを意味します。

string TransctID = Request.QueryString["TXNNo"] 

あなたがチェックすべき最初のnullの場合:

if(Request.QueryString["TXNNo"]!=null) 
{ 
// make the assignation here 
} 
+0

TXNNoが値を持って、私はここでの問題は、プログラムが上のデータを読み取ることができないということだと思う私は、エラーがここに飛び出すと思いますテキストボックス – kelvin

+0

エラーが発生したときに、それをデバッグして正確な行を貼り付けると、より適切に手助けできるようになります。とにかく、あなたのテキストボックスをリピータタグの中に入れてIDを変更すると、あなたの出力のaspウェブページ –

+0

にお返事ありがとうございます。リピータのテキストボックスを削除しようとしましたが、うまくいきました。良い一日を過ごしてください – kelvin

関連する問題