1

asp.net ページにグリッドビューを配置し、SQL 呼び出しを使用してデータソースを取得しています。SQL 呼び出しでは、すべてのフィールド (名前、住所、電話、タイプ) のデータを取得します。グリッドビューには、編集時にバインド フィールドではなくテンプレート フィールドにする必要がある 2 つのフィールド (電話、タイプ) があり、 Item テンプレートのテキストボックスまたはラベル (いずれか)。

コードを実行すると、データグリッドが完成して入力されますが、電話番号またはタイプ フィールド (テンプレート フィールド) の情報は除外されます。情報が正しく表示されるようにフィールドをデータバインドするにはどうすればよいですか。私は自分のコードを含めました。

どんな助けでも大歓迎です。前もって感謝します!

グリッドビュー:

  <asp:GridView ID="gvMTM" runat="server" AllowPaging="True" DataKeyNames="MTMID"
    AutoGenerateColumns="False" AutoGenerateEditButton="True"
    OnRowEditing="gvMTM_RowEditing" 
    OnRowUpdating="gvMTM_UpdateRowEditing" 
    OnRowCancelingEdit="gvMTM_CancelRowEditing" >
    <Columns>
        <asp:BoundField DataField="MTMID" HeaderText="ID" />
        <asp:BoundField DataField="MTMName" HeaderText="Name" />
        <asp:BoundField DataField="Add1" HeaderText="Add1" />
        <asp:BoundField DataField="Add2" HeaderText="Add2" />
        <asp:BoundField DataField="City" HeaderText="City" />
        <asp:BoundField DataField="ST" HeaderText="ST" />
        <asp:BoundField DataField="Zip" HeaderText="Zip" />
        <asp:BoundField DataField="Email" HeaderText="Email" />
        <asp:TemplateField HeaderText="Phone#">
            <EditItemTemplate>
                <asp:TextBox ID="txtPhoneEdit" runat="server"></asp:TextBox>
                <asp:MaskedEditExtender ID="TemptxtPhone_MaskedEditExtender" runat="server" 
                    CultureAMPMPlaceholder="" CultureCurrencySymbolPlaceholder="" 
                    CultureDateFormat="" CultureDatePlaceholder="" CultureDecimalPlaceholder="" 
                    CultureThousandsPlaceholder="" CultureTimePlaceholder="" Enabled="True" 
                    TargetControlID="TemptxtPhone">
                </asp:MaskedEditExtender>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:TextBox ID="txtPhoneRead" runat="server" BorderStyle="None"></asp:TextBox>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="RR">
            <EditItemTemplate>
                <asp:DropDownList ID="ddRREdit" runat="server" Height="16px" Width="100px" DataTextField="Railroad" DataValueField="RRID">
                </asp:DropDownList>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:TextBox ID="txtRRRead" runat="server" BorderStyle="None"></asp:TextBox>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

.CS ページ:

     gvMTM.DataSource = code.GetMTMList();
            gvMTM.DataBind();

SQL 呼び出し

    public DataTable GetMTMList()
    {
        try
        {
            SQLCON = new SqlConnection(connectionString);
            SQLCON.Open();
            SQLCmd = new SqlCommand("spGetMTMList", SQLCON);
            SQLCmd.CommandType = CommandType.StoredProcedure;

            SqlDataAdapter adapter = new SqlDataAdapter(SQLCmd);
            DataTable Detailtable = new DataTable();
            adapter.Fill(Detailtable);

            return Detailtable;

        }
        catch (Exception ex)
        {
            HttpContext.Current.Response.Redirect("~/ErrorRedirect.aspx?" +    ex.Message, false);
            return null;
        }
        finally
        {
            SQLCON.Close();
        }
    }
4

1 に答える 1

10

これを使って:

Text='<%# Eval("phone") %>'

これを追加する必要があります:

 <ItemTemplate>
      <asp:TextBox ID="txtPhoneRead" runat="server" Text='<%# Eval("phone") %>'>
      </asp:TextBox>
 </ItemTemplate>

このEval()メソッドは、データ ソース内のデータをTextプロパティにバインドします。

詳細については、彼の投稿をご覧ください。

toTextBox内のコントロール を変更することを検討してください<ItemTemplate>asp:Label

次のようになります。

<ItemTemplate>
       <asp:Label ID="txtPhoneRead" runat="server" Text='<%# Eval("Phone") %>'>
       </asp:Label>              
 </ItemTemplate>
于 2013-03-18T19:15:30.170 に答える