Я предполагаю, что этот код
DbCommand command2 = db.GetStoredProcCommand("sel_Guid_p");
db2.AddInParameter(command2, "@pGuid", DbType.String, s);
ds2 = db2.ExecuteDataSet(command2);
возвращает одну строку.
То, что вы вызываете его несколько раз, не означает, что существует несколько записей.Вы перезаписываете значение переменной все, что выполняет ваш цикл.
Возможно, вы можете поместить результаты вашего набора данных в объект (создать класс, представляющий результаты), затем, когда вы создадите цикл, добавьте каждый объект результатак списку, затем привяжите этот список к сетке.
Пример:
List<MyCustomerClassForTheReturnedValues> values = new List<MyCustomClassForTheReturnedValues>();
foreach (string s in textLine)
{
DbCommand command2 = db.GetStoredProcCommand("sel_Guid_p");
db2.AddInParameter(command2, "@pGuid", DbType.String, s);
MyCustomClassForTheReturnedValues x = new MyCustomClassForTheReturnedValues(db2.ExecuteDataSet(command2));
values.Add(x);
}
DataGrid1.DataSource = values;
DataGrid1.DataBind();