2015-09-14 2 views
0

Я написал этот код для обновления поля в базе данных, но это поле не обновляется.
Я думаю, что проблема связана с причиной поиска, потому что я пытаюсь это сделать, и он не смог найти мой контроль.обновить поле в базе данных

C# код:

protected void btnCh_Click(object sender, EventArgs e) 
{ 
    SqlConnection db = new SqlConnection(strcon); 
    foreach (RepeaterItem repeaterItem in Repeater1.Items) 
    { 
     CheckBox CheckBox1 = (CheckBox)repeaterItem.FindControl("CheckBox1"); 
     if (CheckBox1.Checked) 
     { 
      db.Open(); 
      Label mylbl = (Label)repeaterItem.FindControl("mylbl"); 
      string mm= mylbl.Text; 
      SqlCommand MyCMD = new SqlCommand("Update BuyGem Set GemChargeStatuse=1 ,Apple_gmail_Pass='' WHERE [email protected]"); 
      MyCMD.Parameters.AddWithValue("@ID", mm); 
      MyCMD.ExecuteNonQuery(); 
      db.Close(); 
     } 
    } 
} 

Aspx код:

<div class="col-md-12"> 
    <asp:Repeater ID="Repeater1" runat="server"> 
     <ItemTemplate> 
      <div class="col-md-12"> 
       <div class=" pull-right col-sm-6 animated2 bounceInLeft"> 
        <div class="panel panel-primary "> 
         <asp:Label ID="mylbl" runat="server" ><%#Eval("ID")%></asp:Label> 
         <div class="panel-body" dir="rtl"> 
          Name : 
          <asp:Label ID="lblname" runat="server"><%#Eval("Name") %></asp:Label> 
          <br /> 
          <div class="col-md-9 pull-left col-xs-12 top15"> 
           select: 
           <asp:CheckBox ID="CheckBox1" runat="server" /> 
          </div> 
         </div> 
        </div> 
       </div> 
      </div> 
     </ItemTemplate> 
    </asp:Repeater> 
    <asp:Button ID="btnCh" runat="server" Text="Button" OnClick="btnCh_Click" /> 
</div> 

Я должен сказать, что проблема не связана обновить command.I протестировали и выяснили, что проблема связана с findconrol который не может найти никакого контроля в моем повторителе. Пожалуйста, просмотрите свои ответы.

+1

Soooo В чем проблема? И вы пропустите отлаженный код? – Dai

+1

Какая ошибка/исключение вы получаете? – Izzy

+0

Я пробовал много способов найти проблему. Я не получил никаких ошибок, только мое поле в базе данных не обновляется. –

ответ

0

Является ли ваш параметр ID в базе данных varchar или integer? Поскольку в настоящее время

SqlCommand MyCMD = new SqlCommand("Update BuyGem Set GemChargeStatuse=1 ,Apple_gmail_Pass='' WHERE [email protected]"); 
MyCMD.Parameters.AddWithValue("@ID", mm); 

вы ищете по строке, где вы shold быть преобразующей строку в целое число, как так:

int.Parse(idStringHere); 
+0

no.it не было проверено, что befor –

1

заменить

SqlCommand MyCMD = new SqlCommand("Update BuyGem Set GemChargeStatuse=1 ,Apple_gmail_Pass='' WHERE [email protected]"); 
MyCMD.Parameters.AddWithValue("@ID", mm); 

в

SqlCommand MyCMD = new SqlCommand("Update BuyGem Set GemChargeStatuse=1 ,Apple_gmail_Pass='' WHERE [email protected]",db); 
MyCMD.Parameter.Add("@ID",SqlDbType.Int).Value=mm; 

см. Difference between Parameters.Add and Parameters.AddWithValue

+0

нет, это не работает. У команды подключения и обновления нет никаких проблем. –

+0

сейчас, какая ошибка? –

+0

нет ошибки. Просто я не могу найти свои элементы управления, поэтому я не могу обновить свою таблицу. –

0

MyCMD не связан с подключением db. Используйте что-то вроде:

var MyCMD = db.CreateCommand(); 
+0

. Я сделал, что это не работает. –

+0

Положите блок catch на свой код и посмотрите, не выбрасываются ли какие-либо исключения. Также проверьте результат ExecuteNonQuery(), чтобы узнать, больше ли этого 0. Этот метод возвращает количество строк, на которые повлиял запрос, в этом случае это должно быть 1. – AlexB

+0

, вы знаете, что проблема связана с моим findcontrol .я уверен –

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