2011-02-18 7 views
1

私は、テーブルからグリッドビュー内の非表示フィールドにフィールドをバインドするのに、私はSystem.Data.DataRowView 'としてエラーを取得しています'AccountType'という名前のプロパティは含まれません。どのように私は、データベースフィールドの値をグリッドビュー内の非表示フィールドにバインドできます

これは、私はそれが正しいですか、私は任意の修正を行う必要があります

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:HiddenField ID="hdnAccntType" runat="Server" Value='<%#Eval("AccountType") %>' /> 
    </ItemTemplate> 
</asp:TemplateField> 

を割り当てる方法ですか?

私のストアドプロシージャ:<%#DataBinder.Eval(Container.DataItem:

CREATE DEFINER=`root`@`%` PROCEDURE `uspGetEmployeeBankDate`(_EmpID INT(11), 
_BankTypeID varchar(10),_AccountType varchar(10)) 
BEGIN 
select EmpID,BankTypeID,DATE_FORMAT(StartDate, '%Y-%m-%d') 
as StartDate,DATE_FORMAT(EndDate, '%Y-%m-%d') as EndDate 
from tblemployeebankdata where EmpID=_EmpID and BankTypeID=_BankTypeID 
and AccountType=_AccountType; 

END 

サンプルコード

 if (mlocal_ds.Tables[0].Rows.Count != 0) 
     { 
      foreach (DataRow drRow in mlocal_ds.Tables[0].Rows) 
      { 
       if (drRow["BankTypeID"].ToString() == "DbalC") 
       { 
        pnlGrid.Visible = false; 
        grdBank.Visible = true; 
        //grdData.Visible = false; 

        strEmpID = HiddenField1.Value; 
        string AccntType = drRow["AccountType"].ToString(); 
        string strBankTypeID = drRow["BankTypeID"].ToString(); 
        string mlocal_strStoredProcName = StoredProcNames.tblEmployeeBankdetails_uspEmployeeBankdetailsDate; 
        mlocal_ds = new DataSet(); 
        oEmployee.SelectId(out mlocal_ds, mlocal_strStoredProcName, strEmpID, strBankTypeID,AccntType); // here the stored procedure is executed 
        grdBank.DataSource = mlocal_ds; 
        grdBank.DataBind(); 
        pnlChckAcc.Visible = false; 
        pnlPrimary.Visible = false; 
        pnlSecond.Visible = false; 
        pnlSecondary.Visible = false; 
        pnlFirst.Visible = false; 
        pnlEditInfo.Visible = false; 
        break; 
       } 

マイグリッドビュー

 <asp:GridView ID="grdBank" runat="server" AutoGenerateColumns="False" CellPadding="4" 
      CssClass="grid" ForeColor="#333333" GridLines="None" Width="349px" Visible="False"> 
      <Columns> 
       <asp:TemplateField> 
        <ItemTemplate> 
         <asp:RadioButton ID="rdbtnBank" runat="server" AutoPostBack="true" OnCheckedChanged="rdbtnBank_CheckedChanged" /> 
        </ItemTemplate>       
       </asp:TemplateField> 
       <asp:TemplateField> 
       <ItemTemplate> 
       <asp:HiddenField ID="hdnAccntType" runat="Server" Value='<%# DataBinder.Eval(Container.DataItem, "AccountType") %>' /> 
       </ItemTemplate> 
       </asp:TemplateField> 
       <asp:BoundField DataField="EmpID" HeaderText="EmpID"> 
        <ItemStyle CssClass="intitalitefname" /> 
       </asp:BoundField> 
       <asp:BoundField DataField="BankTypeID" HeaderText="BankTypeID"> 
        <ItemStyle CssClass="intitalitefname" /> 
       </asp:BoundField> 
       <asp:BoundField DataField="StartDate" HeaderText="Start Date"> 
        <ItemStyle CssClass="intitalitefname" /> 
       </asp:BoundField> 
       <asp:BoundField DataField="EndDate" HeaderText="End Date"> 
        <ItemStyle CssClass="intitalitefname" /> 
       </asp:BoundField> 
      </Columns> 
      <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> 
      <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
      <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> 
      <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> 
      <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
      <EditRowStyle BackColor="#999999" /> 
      <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> 
      <EmptyDataTemplate> 
       nodata to display 
      </EmptyDataTemplate> 
     </asp:GridView> 
+0

私を助け

希望を意味し、あなたが戻って取得データソースに含まれることはないだろう選択Gridviewでこのようなことをしようとしていましたが、SQLへのstringbuilderとlinqを使用して自分のテーブルを動的に構築する方がより迅速で実用的であると判断しました。 –

答えて

0

マハンマド・アクターは、あなたはあなたがあなたのストアドプロシージャを変更する必要は何も

にこれを結合することができないので、元のデータソースがAccountTypeフィールドが含まれていません言ったように:

CREATE DEFINER=`root`@`%` PROCEDURE `uspGetEmployeeBankDate`(_EmpID INT(11), 

_BankTypeID varchar(10),_AccountType varchar(10)) 
BEGIN 
select AccountType, EmpID,BankTypeID,DATE_FORMAT(StartDate, '%Y-%m-%d') 
as StartDate,DATE_FORMAT(EndDate, '%Y-%m-%d') as EndDate 
from tblemployeebankdata where EmpID=_EmpID and BankTypeID=_BankTypeID 
and AccountType=_AccountType; 

END 

私が変更したザ・あなたの「選択」の冒頭に現れています。ここには今、AccountTypeフィールドが含まれています。あなたの元にこのフィールドが含まれていない場合、順番にあなたがそれをバインドすることはできません

デイブ

+0

ありがとうDave小さなミス私は作った – Dotnet

0

あなたは表記を使用する必要があります、 "AccountType")%>

+0

それでも同じエラーが発生しています – Dotnet

+0

テーブル内のフィールドがプライマリキーであるため、この問題が発生します – Dotnet

+0

GridViewにどのオブジェクトをバインドしていますか? DataTable? –

関連する問題