Я добавил CheckBox в DataGridView, чтобы иметь возможность выбирать несколько элементов и, таким образом, передавать их в массив, чтобы можно было массово отправлять сообщения.
Проблема 1: нажатие наCheckBox не проверяется. Стоит отметить, что все, что я сделал, это добавил его из свойств редактирования DataGridView.
Проблема 2: для массовой отправки сообщений используйте следующий блок в строке:
string bloque = "";
bloque = bloque + "ID1\t112223333\tMessage\n";
Но мне нужно отправлять эти сообщения автоматически. Это означает, что, за исключением сообщения или текста, ID и PHONE должны быть загружены и / или назначены путем выбора одного или нескольких CheckBoxes из DataGridView . Для этого создайте следующий класс:
class Example
{
public int id { get; set; }
public string cellphone{ get; set; }
public string text{ get; set; }
public Example() { }
public Example(int id, string cel, string text) {
this.id = id;
this.cellphone= cel;
this.text= text;
}
public string toString() {
return "ID"+id+"\t" + cellphone+ "\t" + text + "\n";
}
}
}
Теперь, это в настоящее время код интерфейса:
public partial class Form1 : Form{
public Form1(){
InitializeComponent();
dtgId.AllowUserToAddRows = false;
}
private void Form1_Load(object sender, EventArgs e){
allId();
dtgId.ReadOnly = true;
}
public void allId(){//method to populate the DataGridView
try{
string chain = "chain";
using (SqlConnection con = new SqlConnection(cadena)){
con.Open();
string query = "SELECT id FROM clients GROUP BY id";
SqlCommand cmd = new SqlCommand(query, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
dtgId.DataSource = ds.Tables[0];
con.Close();
}
}
catch (SqlException ex){
MessageBox.Show("Error: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void button2_Click(object sender, EventArgs e){//Code to send SMS in bulk
string user= "user";
string pass= "pass";
string respuesta = "";
int id = Convert.ToInt32(txtId.Text);
string cellp= txtNumber.Text;
string text= txtText.Text;
List<Example> item = new List<Example>();
Example example= new Example(id, cellp, text);
item.Add(example);
string bloque = "";
//bloque = bloque + "ID1\t1144444444\tMi texto 1\n";
for (int i = 0; i > item.Count; i++){
bloque += item[i].toString();
}
Uri uri = new Uri("uri");
HttpWebRequest requestFile = (HttpWebRequest)WebRequest.Create(uri);
requestFile.Method = "POST";
requestFile.ContentType = "application/x-www-form-urlencoded";
StringBuilder postData = new StringBuilder();
postData.Append("api=" + System.Web.HttpUtility.UrlEncode("1") + "&");
postData.Append("usuario=" + System.Web.HttpUtility.UrlEncode(user) + "&");
postData.Append("clave=" + System.Web.HttpUtility.UrlEncode(pass) + "&");
postData.Append("separadorcampos=" + System.Web.HttpUtility.UrlEncode("tab") + "&");
postData.Append("bloque=" + System.Web.HttpUtility.UrlEncode(bloque) + "&");
byte[] byteArray = Encoding.GetEncoding("iso-8859-1").GetBytes(postData.ToString());
requestFile.ContentLength = byteArray.Length;
Stream requestStream = requestFile.GetRequestStream();
requestStream.Write(byteArray, 0, byteArray.Length);
requestStream.Close();
HttpWebResponse webResp = requestFile.GetResponse() as HttpWebResponse;
if (requestFile.HaveResponse){
if (webResp.StatusCode == HttpStatusCode.OK || webResp.StatusCode == HttpStatusCode.Accepted){
StreamReader respReader = new StreamReader(webResp.GetResponseStream(), Encoding.GetEncoding("iso-8859-1"));
respuesta = respReader.ReadToEnd();
MessageBox.Show(respuesta);
}
}
}
private void dtgId_CellContentClick(object sender, DataGridViewCellEventArgs e){
//With this method, pressing on a checkbox shows the id and the phone in a TextBox
var row = dtgId.Rows[e.RowIndex];
var id = Convert.ToInt32(row.Cells["id"].Value.ToString());
try{
string conn = "cadena";
using (SqlConnection con = new SqlConnection(conn)){
con.Open();
string sql = "SELECT id,cellphone FROM clients WHERE id=@id";
SqlCommand cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@id", id);
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read()){
txtId.Text = reader["id"].ToString();
txtNumero.Text = reader["cellphone"].ToString();
}
}
}catch (SqlException exc){
MessageBox.Show("Error: " + exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
Чтобы обобщить идею: он не отправляет сообщения, то естьони не достигли меня. Любая идея, как я могу это исправить?