MOSS: Memperbarui daftar kustom

Ada banyak contoh yang baik dari memperbarui daftar kustom melalui SDK. Di sini adalah lain.

Masalah bisnis: Bentuk InfoPath telah dirancang yang memungkinkan pengguna untuk memasukkan online membeli requisitions. PO permintaan nomor harus tradisional urutan berdasarkan nilai-nilai integer dan dihitung secara otomatis.

Solusi bisnis: Membuat daftar MOSS kustom yang mengandung dua kolom: "ControlField" dan "ControlValue". Nilai kolom berisi nomor permintaan pembelian berikutnya. Perhatikan bahwa generik "kontrol" Konvensi penamaan menyediakan untuk mengendalikan masa depan bidang yang dapat digunakan sebagai diperlukan.

Solusi teknis: Membuat layanan web diakses oleh klien InfoPath. Layanan web kembali kembali nomor permintaan pembelian berikutnya dan update nilai dari daftar.

Pelajaran:

  • Ketika menambahkan ini layanan web sebagai sumber data untuk bentuk InfoPath, Saya merasa perlu untuk mengubahnya menjadi udc dan menyimpannya ke Perpustakaan sambungan data.
  • Saya juga merasa perlu untuk mengaktifkan skrip lintas domain melalui layanan pusat administrasi // aplikasi manajemen // bentuk konfigurasi server.
  • Pertama kalinya bentuk mencoba untuk mengakses layanan web, Butuh waktu dan kadang-kadang, itu akan waktu. Saya fiddled dengan pengaturan dalam bentuk konfigurasi server untuk memperluas pengaturan timeout dan yang tampak untuk membantu.

Kode:

menggunakan Sistem;
menggunakan System.Web;
menggunakan System.Web.Services;
menggunakan System.Web.Services.Protocols;
menggunakan Microsoft.SharePoint;
menggunakan System.Configuration;

[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
Umum kelas PoService : System.Web.Services.WebService
{
Umum PoService () {

//Tanda komentar baris berikut jika menggunakan dirancang komponen
//InitializeComponent();
}

/// <Ringkasan>
/// Mendapatkan nomor PO berikutnya dari po nomor kontrol daftar sharepoint.
/// Kenaikan PO nomor dalam daftar itu.
/// </Ringkasan>
/// <kembali></kembali>
[WebMethod]
Umum string GetNextPoNumber()
{
string SpPoControlSiteName; // Nama sebenarnya MOSS situs yang host daftar kontrol PO.
string SpPoControlListName; // Nama daftar MOSS yang sebenarnya yang berisi kontrol Po.

SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();

string nextPoReqNumber = "xyzzy";

menggunakan (SPSite situs = baru SPSite(SpPoControlSiteName))
{
menggunakan (SPWeb Web = site. OpenWeb())
{

SPList currentList = web. Daftar[SpPoControlListName];

foreach (SPItem controlItem dalam currentList.Items)
{

Jika (((string)controlItem["ControlField"]).Sama dengan("NextPoNumber"))
{
nextPoReqNumber = (string)controlItem["ControlValue"];

Int int_nextPoReqNumber;
int_nextPoReqNumber = Mengkonversi.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}

} // Mencari, membaca dan memperbarui nomor PO dalam daftar.


} // menggunakan spweb web = site.openweb()
} // menggunakan spsite site = new spsite("http://localhost/mizuho")

kembali nextPoReqNumber;

}
}

Satu berpikir tentang “MOSS: Memperbarui daftar kustom

  1. KSP wrote:
    Hi Paulus,
    Kami memiliki situasi yang sama apa yang Anda menyebutkan tapi masalahnya adalah saya ingin menggunakan servie web ini pada keseimbangan beban server.Oleh karena itu,Bagaimana untuk menangani permintaan concurrency dalam hal ini atau bagaimana untuk membuat permintaan baru menunggu dan hanya satu permintaan harus memperbarui daftar nomor sampai kemudian semua permintaan lain harus que.Tolong beritahu saya tahu bagaimana untuk mencapai hal ini.
    Thanks in Advance.
    Balasan

Tinggalkan balasan

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai *