2013-08-25 3 views
2

Я пытаюсь получить мою кнопку отправки, чтобы вставить данные, введенные в пару текстовых полей и скрытое поле. Прямо сейчас, это дает мне ошибку, говоря, что имя «txtComments», «txtName» и «datePosted» не существует в текущем контексте. Я относительно уверен, что мне нужно создать переменную, но как бы я удостоверился, что они равны тем, что находится в соответствующих элементах ASP? Вот мой код:Отправить метод не распознать AddWithValue

protected void submitButton_Click(object sender, EventArgs e) 
{ 
    string constr = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=~\App_Data\TravelJoansDB.accdb"; 
    string cmdstr = "INSERT INTO Comments VALUES (@txtComments, @datePosted, @personName)"; 

    OleDbConnection con = new OleDbConnection(constr); 
    OleDbCommand com = new OleDbCommand(cmdstr, con); 
    con.Open(); 
    com.Parameters.AddWithValue("@txtComments", txtComments.TextBox); 
    com.Parameters.AddWithValue("@datePosted", datePosted.DateTime); 
    com.Parameters.AddWithValue("@personName", txtName.TextBox); 
    com.ExecuteNonQuery(); 
    con.Close(); 
} 

Как я могу убедиться, что переменные установлены на элементы управления asp? Какие здесь:

<InsertItemTemplate> 
    Name: <asp:TextBox ID="txtName" runat="server" Text='<%# Bind("personName") %>'></asp:TextBox><br /> 
    Comments:<br /> 
    <asp:TextBox ID="txtComments" runat="server" Text='<%# Bind("commentText") %>' 
       TextMode="MultiLine" Rows="4" Columns="50"></asp:TextBox><br /> 
    <asp:HiddenField ID="hidTimeDate" runat="server" Value='<%# Bind("datePosted") %>' /> 
    <asp:Button ID="InsertButton" runat="server" CausesValidation="True" 
        CommandName="Insert" Text="Submit" OnClick="submitButton_Click" /> 
</InsertItemTemplate> 
+0

, внутри которого контролируют этот 'контроль InsertItemTemplate' расположенный? – Damith

+0

панель обновления, которая включена в заполнитель содержимого, потому что я использую мастер-страницы. – Joseph

+0

Я имею в виду gridview или listview? – Damith

ответ

1

код позади:

protected void submitButton_Click(object sender, EventArgs e) 
{ 

    //string constr = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=~\App_Data\TravelJoansDB.accdb"; 
    string constr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Database21.accdb;"; 
    string cmdstr = "INSERT INTO Comments(commentText,datePosted,personName) VALUES (@txtComments, @datePosted, @personName)"; 
    OleDbConnection con = new OleDbConnection(constr); 
    OleDbCommand com = new OleDbCommand(cmdstr, con); 
    TextBox tComments = (TextBox)FormView1.FindControl("txtComments"); 
    HiddenField tDate = (HiddenField)FormView1.FindControl("hidTimeDate"); 
    TextBox tName = (TextBox)FormView1.FindControl("txtName"); 
    con.Open(); 
    com.Parameters.AddWithValue("@txtComments", tComments.Text); 
    com.Parameters.AddWithValue("@datePosted", DateTime.Now.ToString()); 
    //com.Parameters.AddWithValue("@datePosted", tDate.Value.ToString()); 
    com.Parameters.AddWithValue("@personName", tName.Text); 
    com.ExecuteNonQuery(); 
    con.Close(); 
} 
protected void FormView1_ItemInserting(object sender, FormViewInsertEventArgs e) 
{ 
} 

Примечание: Изменение Возведения!

ASPX:

<asp:FormView ID="FormView1" runat="server" DefaultMode="Insert" 
    oniteminserting="FormView1_ItemInserting"> 
    <InsertItemTemplate> 
     Name: <asp:TextBox ID="txtName" runat="server" 
    Text='<%# Bind("personName") %>'></asp:TextBox><br /> 
Comments:<br /> 
<asp:TextBox ID="txtComments" runat="server" Text='<%# Bind("commentText") %>' 
      TextMode="MultiLine" Rows="4" Columns="50"></asp:TextBox> 
      <br /> 
<asp:HiddenField ID="hidTimeDate" runat="server" Value='<%# Bind("datePosted") %>' /> 
<asp:Button ID="InsertButton" runat="server" CausesValidation="True" 
       CommandName="Insert" Text="Submit" OnClick="submitButton_Click" /> 
    </InsertItemTemplate> 
</asp:FormView> 
+0

Использование вызова «DateTime.Now», мне нужно скрытое поле в ASP-коде? В противном случае он все еще говорит, что txtComments не существует в текущем контексте. – Joseph

+0

Кроме того, вот список пространств имен, которые я использую. Я уверен, что некоторые из них посторонние: using System; с использованием System.Collections.Generic; с использованием System.Linq; с использованием System.Web; с использованием System.Web.UI; с использованием System.Web.UI.WebControls; с использованием System.Data.OleDb; – Joseph

+0

Мой ответ отредактировал –

Смежные вопросы